我指的是以下来源: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
的可执行文件,或者更好的是包含两种类型的可执行文件的通用二进制文件。
请测试任何建议的解决方案。
谢谢,
亚光
答案 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。