你好,我正在为自己编写的编译器生成x86汇编代码,但在64位虚拟机上链接文件时遇到了一些问题(汇编代码是32位的)。
我使用以下命令可以成功地组装目标文件:
as --32 mult.S -o mult.o
但是我似乎找不到任何选项可以使ld
生成一个32位的ELF文件:
ld <some-option?> mult.o -o mult
任何帮助都将是非常好的。
ld <some-option?> mult.o -o mult
ld -m elf_i386 mult.o -o mult
ld -V
示例输出:
GNU ld (GNU Binutils for Ubuntu) 2.24
Supported emulations:
elf_x86_64
elf32_x86_64
elf_i386
i386linux
elf_l1om
elf_k1om
i386pep
i386pe
ld
能做这件事情,但由于某种原因它仍然提示我有不匹配的架构。 - Hunter McMillenelf32_x86_64
、i386linux
和elf_l1om
这样的难点吗? - Ciro Santilli OurBigBook.com-m elf_i386
。因此,我认为它应该与 GCC 中的-m32
所做的相同。 - christopher westburry