【发布时间】:2013-09-16 17:50:52
【问题描述】:
我是新手,我正在尝试将 64 位编译文件链接到 32 位目标文件,但出现此错误:
ld:警告:忽略文件 Estudiant.o,文件是为不受支持的文件格式构建的(0x7f 0x45 0x4c 0x46 0x 1 0x 1 0x 1 0x 0 0x 0 0x 0 0x 0 0x 0 0x 0 0x 0 0x 0 0x 0)这不是被链接的架构(x86_64):Estudiant.o 架构 x86_64 的未定义符号:
我想我需要在 linux 中安装 g++-multilib,但我找不到 osx 的等价物。有谁知道如何解决这个问题?
【问题讨论】:
-
只用相同的架构编译所有东西,即全部 32 位或全部 64 位。
-
只是给了我一个带有课程的 32 位编译对象,我不知道如何使它与我的 64 位机器和其他文件一起工作。而且我无法再次编译它,因为他们没有给我们代码文件(file.cpp)。有没有办法在osx上解决这个问题?我知道您可以在 linux 上安装 multilib 并使用 -m32 使其工作,但这在 osx 上不起作用。
-
是的,只需编译为
gcc -m32 ...即可获得与您的 32 位Estudiant.o目标文件链接的 32 位可执行文件。 (顺便说一句,我希望Estudiant.o是一个 OS X 32 位目标文件,而不是用于 Linux 的东西?)
标签: c++ macos compilation g++