nasm和gcc:32位链接失败(64位Mac OS X)

时间:2012-05-23 19:16:46

标签: gcc assembly nasm ld i386

我刚用这种方式用nasm编译了一个汇编文件:

$ nasm -f elf somefile.asm -o somefile.o

之后,我想将somefile.ogcc

的程序相关联
$ gcc -m32 somefile.o -o someprogramm

但是链接文件会打印以下错误:

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 个答案:

答案 0 :(得分:1)

您遇到的问题是您正在创建一个与Mac OS X对象格式不兼容的32位Linux(ELF)对象文件。尝试将'-f elf'切换为'-f macho32'。

答案 1 :(得分:1)

过了一段时间我决定使用 Linux 来制作这种程序,因为它具有更大的灵活性。您可以在虚拟机上使用Linux,例如 Virtual Box