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

猎人麦克米伦:

嗨,我目前正在为我正在编写的编译器生成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查看第一个对象,并应根据该对象的格式自动选择仿真。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何强制可执行文件链接动态库

如何将 32 位共享库(.so 文件)链接到 32 位可执行文件?

加载ELF可执行文件

ELF可执行文件

从LLVM位代码生成Rust可执行文件

将16位实模式代码链接到兼容Multiboot的ELF可执行文件时出现LD错误

为什么我的64位可执行文件比32位可执行文件大3倍?

如果可执行文件不存在,如何安装32位或64位可执行文件?

每个可执行文件的不同链接器选项

如何强制 gcc 编译器/链接器从可执行文件中删除未使用的静态数组

如何使用mingw-w64编译和链接32位Windows可执行文件

使用链接器生成程序,但运行可执行文件时显示“无此文件或目录”

(FlexNet Publisher)尝试运行Elf 32位LSB可执行文件时没有此类文件或目录

gfortran:在64位系统中编译32位可执行文件

在32位和64位计算机上的C / C ++可执行文件

无法在64位Ubuntu上运行32位动态可执行文件

在64位Debian Jessie上运行32位可执行文件

“使用回滚可执行文件”不强制设置可执行文件

获取主要可执行文件的ELF标头

替换ELF可执行文件的代码/文本段

将COBOL编译为Windows的32位可执行文件

在Ubuntu 13.10中运行32位可执行文件

Docker容器无法运行使用wget复制的32位iperf可执行文件

为什么32位可执行文件不能在WoW64下运行?

如何链接 ocamlopt 生成的目标文件以创建可执行文件?

CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

CMAKE:错误的链接器(g ++)用于可执行文件到CUDA库的链接

强制将可执行文件存入内存?

为什么Clang ++和gcc / g ++生成链接不同的可执行文件