我刚用这种方式用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
答案 0 :(得分:1)
您遇到的问题是您正在创建一个与Mac OS X对象格式不兼容的32位Linux(ELF)对象文件。尝试将'-f elf'切换为'-f macho32'。
答案 1 :(得分:1)
过了一段时间我决定使用 Linux 来制作这种程序,因为它具有更大的灵活性。您可以在虚拟机上使用Linux,例如 Virtual Box 。