【问题标题】:Use ld on 64-bit platform to generate 32-bit executable在 64 位平台上使用 ld 生成 32 位可执行文件
【发布时间】:2015-07-22 23:25:46
【问题描述】:

我写了一个汇编代码:

$as --32 -o hello.o hello.s

然后我尝试生成一个可执行文件:

$ld -o hello hello.o

它给了我一个错误:

ld: i386 architecture of input file `ConditionalBranching.o' is incompatible with i386:x86-64 output

我尝试使用标志 -m32 或 --32,但我不接受它们。我无法通过阅读 ld 的手册页找到解决方案。如何从我的 32 位共享对象生成 32 位二进制文​​件?

【问题讨论】:

  • 使用ld -melf_i386

标签: assembly x86 x86-64 ld


【解决方案1】:

您的链接器正在尝试创建 64 位二进制文​​件,但您的汇编代码是针对 32 位体系结构汇编的。这会造成不匹配。

通过将-m elf_i386 标志传递给您的链接器来解决此问题,明确指示它创建一个 32 位二进制文​​件。

【讨论】:

  • ld:警告:选项 -m 已过时并被忽略 :(
猜你喜欢
  • 2016-11-30
  • 1970-01-01
  • 2015-02-27
  • 2014-03-10
  • 2011-02-18
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多