Xcode/GCC 链接问题 : file is not of required architecture

标签 xcode macos gcc g++ linker

我正在尝试将包含 boost 1.37 和 wxwidgets 的 Windows 项目移植到 Mac。它编译正常,但链接器给了我一个“文件不是体系结构 ppc 所需的体系结构”错误,用于 libz.1.dylib 以及与其他一些库的警告相同的消息。我还收到 libz.1.dylib 的“重复 dylib”警告。

链接器输出如下所示:

使用配置“Debug”构建项目“Gemsweeper Mac”的目标“Gemsweeper Mac”

检查依赖关系

Ld "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug/Gemsweeper Mac.app/Contents/MacOS/Gemsweeper Mac" normal i386
    cd "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac"
    setenv MACOSX_DEPLOYMENT_TARGET 10.4
    /Developer/usr/bin/g++-4.0 -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk "-L/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug" -L/Developer/SDKs/MacOSX10.4u.sdk/usr/local/lib -L/opt/local/lib "-F/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug" -F/Users/adriangrigore/Library/Frameworks -F/Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks -filelist "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/Gemsweeper Mac.LinkFileList" -mmacosx-version-min=10.4 -L/opt/local/lib -L/Users/adriangrigore/wxwidgets-manual/wxMac-2.8.9/lib /opt/local/lib/libboost_system-mt.a /opt/local/lib/libboost_program_options-mt.a /opt/local/lib/libboost_thread-mt.a -arch ppc -arch i386 -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime -framework OpenGL -framework AGL /Users/adriangrigore/wxwidgets-manual/wxMac-2.8.9/lib/libwx_mac-2.8.a -framework WebKit -lwxexpat-2.8 -lwxtiff-2.8 -lwxjpeg-2.8 -lwxpng-2.8 -lz -lpthread -liconv -framework SDL -framework Cocoa -o "/Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Debug/Gemsweeper Mac.app/Contents/MacOS/Gemsweeper Mac"
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/main.o, file is not of required architecture
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/variousfunctions-xcode.o, file is not of required architecture
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/ParticleLayers.o, file is not of required architecture
ld warning: in /Users/adriangrigore/Documents/Gemsweeper Mac/Gemsweeper MacOS/Gemsweeper Mac/build/Gemsweeper Mac.build/Debug/Gemsweeper Mac.build/Objects-normal/i386/SDLMain.o, file is not of required architecture
ld warning: in /opt/local/lib/libboost_system-mt.a, file is not of required architecture
ld warning: in /opt/local/lib/libboost_program_options-mt.a, file is not of required architecture
ld warning: in /opt/local/lib/libboost_thread-mt.a, file is not of required architecture
ld warning: in /opt/local/lib/libz.dylib, file is not of required architecture
ld warning: in /opt/local/lib/libiconv.dylib, file is not of required architecture
ld: in /opt/local/lib/libz.1.dylib, file is not of required architecture for architecture ppc
collect2: ld returned 1 exit status
ld warning: duplicate dylib /opt/local/lib/libz.1.dylib
ld warning: duplicate dylib /opt/local/lib/libiconv.2.dylib

我对 Mac 平台很陌生,所以任何帮助将不胜感激!

谢谢,

阿德里安

最佳答案

从你得到的消息来看,大多数 Gemsweeper Mac 和 libboost 都是用 ppc 作为架构编译的。您应该配置 Xcode 以生成通用二进制文件,并可能通过 MacPorts 重新编译 libboost。最近的 MacPorts 有一个“通用”目标可以提供帮助,尽管如果您不打算在 ppc 上运行它,您只需重新编译它。

您似乎还需要重新编译 zlib 和 libiconv。

关于Xcode/GCC 链接问题 : file is not of required architecture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486885/

相关文章:

macos - 为 NSTableView 中的选定行启用复制

objective-c - 本地化嵌套的 Info.plist 键

c++ - 在跨平台代码中处理 stdafx.h

c++ - gcc '-rdynamic' 标志等同于 MSVC

ios - Swift 2/XCode 7 中惰性变量中的字符串文字 [无法转换字符串类型的值 ...]

ios - 在Xcode托管的配置文件中选择了哪些设备?

ios - 当我单击后退按钮时,我的 View 从横向变为纵向

ios - 将 iOS 应用程序提交到应用程序商店应用程序标识符无效

macos - 将音频流式传输到多个 AirPlay 设备

c++ - 使用 shared_ptr 和 glutInit 导致段错误