强制GNU链接器生成32位ELF可执行文件

Hun*_*len 17 linux x86 assembly elf ld

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

我能够使用此命令组合目标文件:

as --32 mult.S -o mult.o
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到任何选项ld,使它生成一个32位的ELF文件:

ld <some-option?> mult.o -o mult
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.

Emp*_*ian 29

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

ld -m elf_i386 mult.o -o mult
Run Code Online (Sandbox Code Playgroud)

您可以获得可用架构的列表:

ld -V
Run Code Online (Sandbox Code Playgroud)

样本输出:

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
Run Code Online (Sandbox Code Playgroud)

但是,这不是必需的:ld查看第一个对象,并应根据该对象的格式自动选择仿真.