我正在使用gcc版本4.2的MAC OSX 10.6上编写示例应用程序。 我正在使用gcc 4.2版编译应用程序。 它在同一台机器上工作正常,但在MAC OSX 10.5(gcc 4.0)上它无法正常工作。 我怎么能在10.6上编译它所以它也适用于旧机器?
我收到这些错误
dyld: unknown required load command 0x80000022
Trace/BPT trap
我过去构建的命令是
gcc -m32 main.cc
答案 0 :(得分:2)
在10.5 X机器的OS X 10.6机器上错误地构建了应用程序。开发人员可以通过考虑三件事来解决这个问题:
Using the correct compiler parameters:
gcc-4.2 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk ...
Using the correct linker settings (setting environment variable before link command). This is required, so that the OS X 10.6 linker will not use the loader command 'LC_DYLD_INFO_ONLY' (=0x80000022), because OS X 10.5 does not understand this command:
export MACOSX_DEPLOYMENT_TARGET=10.5
(or setenv MACOSX_DEPLOYMENT_TARGET=10.5)
修复此问题后,可以通过运行'otool'来检查应用程序是否针对OS X 10.5正确构建:
otool -l binary
正确的二进制文件不应包含任何'LC_DYLD_INFO_ONLY'加载命令(仅限'LC_DYLD_INFO'命令)。
(另见我的博客文章http://grauonline.de/wordpress/?p=71)
答案 1 :(得分:1)
-arch i386 -Wl,-macosx_version_min,10.5
会有所帮助;但我不确定他们是否足够。