Question

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
Was it helpful?

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

OTHER TIPS

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

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top