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
有帮助吗?

解决方案 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.

其他提示

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'.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top