3

使用 -m32 参数编译时为什么会出现此错误?

无法识别的仿真模式:32

我在 x86_64 机器上使用 g++ 进行编译。它发生在一个项目中,但不会发生在另一个项目中……有什么提示吗?

注意:我使用的是 Eclipse CDT,所以也许这是一个特定于 IDE 的 gocha?

改写的问题

或许更好的问题是:在 x86_64 机器上运行时,在 Eclipse 中构建 x86 二进制文件的最佳方法是什么?

4

2 回答 2

4

似乎在 Eclipse 中,如果在编译器选项中指定了 -m32,则必须在杂项链接器选项中指定它。

当您引用不存在的库路径时,会出现“无法识别的仿真模式:32”错误消息 - 这很奇怪!

于 2009-03-19T21:39:15.993 回答
3

在一个项目中,您不-m小心将 传递给了链接器。GNU 链接器 (ld) 支持用于指定仿真模式的 -m 选项。仿真由链接描述文件、输出目标文件格式和它的参数组成——比如起始地址。注意不要放入-mLDFLAGS,而是放入 CXXFLAGS(C++ 编译器标志)或 CFLAGS(c 编译器标志)。

例如,myld支持 elf_i386 和 i386linux 仿真模式,分别用于生成 ELF 二进制文件和 a.out 二进制文件。

于 2009-03-19T20:10:40.607 回答