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