使用 -m32 参数编译时为什么会出现此错误?
无法识别的仿真模式:32
我正在 x86_64 机器上使用 g++ 进行编译。它发生在一个项目中,但不会发生在另一个项目中......有什么提示吗?
注意:我正在使用 Eclipse CDT,所以这也许是 IDE 特定的 gocha?
也许更好的问题是:在 x86_64 机器上运行时,在 Eclipse 中构建 x86 二进制文件的最佳方法是什么?
似乎在 Eclipse 中,如果在编译器选项中指定了 -m32,则必须在杂项链接器选项中指定 -m32。
当您引用不存在的库路径时,会出现“无法识别的仿真模式:32”错误消息 - 这很奇怪!
在一个项目中,您不小心将
-m
传递给了链接器。 GNU 链接器 (ld) 支持用于指定仿真模式的 -m 选项。仿真由链接器脚本、输出目标文件格式及其参数(例如起始地址)组成。注意不要将 -m
放入 LDFLAGS,而是放入 CXXFLAGS(C++ 编译器标志)或 CFLAGS(C 编译器标志)。
例如,我的
ld
支持模拟模式elf_i386和i386linux,分别用于生成ELF二进制文件和a.out二进制文件。