25

嗨,我目前正在为我正在编写的编译器生成 x86 程序集,并且在我的 64 位 VM 上链接文件时遇到了一些问题(程序集代码是 32 位)。

我能够用这个命令很好地组装目标文件:

as --32 mult.S -o mult.o

但我似乎找不到任何ld使它生成 32 位 ELF 文件的选项:

ld <some-option?> mult.o -o mult

任何帮助都会很棒。

4

1 回答 1

38

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 查看第一个对象,并且应该根据该对象的格式自动选择仿真。

于 2013-04-14T21:16:48.487 回答