Hmm, but then aren't you creating a 64-bit executable? I dunno if that matters, but try it without the "64" using the ld flag Fordy recommends and see what happens.
Actually I think that flag should be "-m elf_i386" but if you put -m in there and it doesn't recognized the arg it will say:
root~»ld -m satan
ld: unrecognised emulation mode: satan
Supported emulations: elf_x86_64 elf_i386 i386linux elf_l1om
That's what you get when you try to remember compiler flags from memory!
Either way, you should be able to assemble 32 or 64 bit code with nasm and "ld" is such an impressive linker that you can link together more than you can ever need if you refer to the docs
As for the AT&T syntax conundrum there are ways to get NASM to use Intel syntax. I know I did it way back when so perhaps Googling it will give you some answers. I know it is possible but I do not remember what I did.