1

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

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

之后我想链接somefile.o到一个程序gcc

$ 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
4

2 回答 2

1

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

于 2012-05-23T19:53:04.413 回答
1

一段时间后,我决定将Linux用于此类程序,因为它具有更大的灵活性。您可以在Virtual Box等虚拟机上使用 Linux 。

于 2012-07-11T12:38:36.113 回答