在Mac上编译Qualnet时出错:文件不是必需的体系结构

时间:2010-08-01 18:47:19

标签: c++ macos linker

尝试在Mac上编译Qualnet时,出现以下错误: ld:警告:在../kernel/obj/mobility_private.o-darwin-x86-gcc-4.0中,文件不是必需的体系结构 以及此类其他文件的一堆错误。 所以我想知道是否还有解决问题的方法。 焦急地等待帮助。

2 个答案:

答案 0 :(得分:0)

这意味着您正在尝试链接不同架构的对象。

例如,有一个为i386(32位)编译的对象和另一个为x86_64(64位)编译的对象。

确保为目标体系结构编译所有对象。您的选择是:

  1. 重新编译mobility_private.o 64位(-arch x86_64);
  2. 为32位和64位重新编译mobility_private.o(-arch i386 -arch x86_64);
  3. 重新编译32位应用程序(-arch i386),因此它正确链接到mobility_private.o

答案 1 :(得分:0)

您可以使用 file 检查某个二进制文件的体系结构:

file libdynlib.so
libdynlib.so: Mach-O 64-bit dynamically linked shared library x86_64

您必须将程序编译为您正在使用的库的相同体系结构。所以,一切都必须是32位或64位。