【问题标题】:Why do I get the "unrecognised emulation mode: 32" error in Eclipse?为什么在 Eclipse 中出现“无法识别的仿真模式:32”错误?
【发布时间】:2010-10-14 09:50:44
【问题描述】:

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

无法识别的仿真模式:32

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

注意:我使用的是 Eclipse CDT,所以这可能是 IDE 特定的 gocha?

改写的问题

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

【问题讨论】:

    标签: c++ eclipse compiler-construction g++


    【解决方案1】:

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

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

    【讨论】:

    • 库路径不存在,天才!
    【解决方案2】:

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

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

    【讨论】:

    • 嗯,不知何故我设法让它工作,不知道如何......但是现在,当我从链接器中删除 -m32 参数时,它会抛出数百个错误,例如......输入文件 {file-name} 的 i386 架构与 i386:x86-64 输出不兼容
    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2022-10-21
    • 2021-09-18
    • 2018-05-02
    • 1970-01-01
    • 2017-07-13
    相关资源
    最近更新 更多