为什么我在 Eclipse 中收到“无法识别的仿真模式:32”错误?

问题描述 投票:0回答:2

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

无法识别的仿真模式:32

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

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

改写问题

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

c++ eclipse g++
2个回答
4
投票

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

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


3
投票

在一个项目中,您不小心将

-m
传递给了链接器。 GNU 链接器 (ld) 支持用于指定仿真模式的 -m 选项。仿真由链接器脚本、输出目标文件格式及其参数(例如起始地址)组成。注意不要将
-m
放入 LDFLAGS,而是放入 CXXFLAGS(C++ 编译器标志)或 CFLAGS(C 编译器标志)。

例如,我的

ld
支持模拟模式elf_i386和i386linux,分别用于生成ELF二进制文件和a.out二进制文件。

© www.soinside.com 2019 - 2024. All rights reserved.