嗨,我目前正在为我正在编写的编译器生成 x86 程序集,并且在我的 64 位 VM 上链接文件时遇到了一些问题(程序集代码是 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 查看第一个对象,并且应该根据该对象的格式自动选择仿真。