问题
I've just compiled a assembley file with nasm
this way:
$ nasm -f elf somefile.asm -o somefile.o
After that I want to link somefile.o
to a programm with gcc
$ gcc -m32 somefile.o -o someprogramm
But linking the file prints the following error:
ld: warning: ignoring file somefile.o, file was built for unsupported file format which is
not the architecture being linked (i386)
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
回答1:
The problem you're having is that you're creating a 32-bit Linux(ELF) object file which isn't compatible with the Mac OS X object format. Try switching '-f elf' to '-f macho32'.
回答2:
After a time I decided to use Linux for this kind of programms, because it has more flexibility. You can use Linux on a virtual machine like Virtual Box.
来源:https://stackoverflow.com/questions/10726434/nasm-and-gcc-32-bit-linking-failed-64-bit-mac-os-x