从命令行构建为Mac OS 10.5(和10.6)生成二进制文件

时间:2009-09-07 17:06:22

标签: command-line build-process build macos compilation

我指的是以下来源:http://clpbar.sourceforge.net

构建流程是标准:./configure后跟make

如果我在10.5上构建,我会得到一个file包含的二进制文件:Mach-O executable i386
如果我构建在10.6上,我会得到一个file包含的二进制文件:Mach-O 64-bit executable x86_64

如何从10.6上的命令行构建并生成类型为Mach-O executable i386的可执行文件,或者更好的是包含两种类型的可执行文件的通用二进制文件。

请测试任何建议的解决方案。

谢谢,
亚光

3 个答案:

答案 0 :(得分:3)

默认情况下,随OS X 10.6一起发布的GCC版本构建64位二进制文​​件。用10.5分发的GCC版本默认构建32位二进制文​​件。

在运行./configure之前,设置一些环境变量。如果您希望它是带有i386和x86_64代码的Intel通用二进制文件,请设置以下变量(假设您使用的是bash):

export CFLAGS="-arch i386 -arch x86_64"
export CXXFLAGS=$CFLAGS
export LDFLAGS=$CFLAGS

这将告诉configure脚本传递这些编译器和链接器选项,从而构建一个包含i386和x86_64体系结构的二进制文件。

或者,如果您希望它只构建为i386二进制文件:

export CFLAGS="-arch i386"
export CXXFLAGS=$CFLAGS
export LDFLAGS=$CFLAGS

答案 1 :(得分:3)

来自Apple开发论坛:

./configure CC="gcc -arch i386" CXX="g++ -arch i386"

完美无缺。

答案 2 :(得分:1)

为每个目标使用-arch标志。所以,例如。

gcc -arch i386 -arch x86_64 ...

将与两者构建一个胖二进制文件。我相信默认情况下gcc构建到目标体系结构,即OS86 10.6的x86_64。