This topic is out of date, but since no one answered, I answer, while I'm around.
Try "nasm -f elf ...", because LD can't handle anything else (normally).
You could recompile binutils to make LD support more formats, but different object formats normally doesn't fit together very well (see the coff error message...), so use ELF, because that's what GCC produces.
BTW it seems to me that You won't create a flatbin this way.
You must tell LD something like "-oformat binary" or "--output-format=binary" or so... (type "info gcc")
And normally You have to recompile LD to make it possible.
(And if You link 16bit code together with 32bit code, You have to take care of the object file format incompatibility I mentioned above _and_ be very careful about the JMP-address. Often it's easier to
build a 16bit-flatbin and a 32bit-flatbin or -object file.)
Peter Wiehe