从新的mac机器为旧的mac创建应用程序?

时间:2011-04-01 06:28:36

标签: c gcc osx-leopard

我正在使用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 

2 个答案:

答案 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会有所帮助;但我不确定他们是否足够。