Command line 从命令行生成Mac OS 10.5(和10.6)的二进制文件

Command line 从命令行生成Mac OS 10.5(和10.6)的二进制文件,command-line,build-process,build,macos,compilation,Command Line,Build Process,Build,Macos,Compilation,我指的是以下来源: 构建过程是标准的:/configure,然后是make 如果我在10.5上构建,我会得到一个二进制文件,其文件包含:Mach-O可执行文件i386 如果我在10.6上构建,我会得到一个二进制文件,其文件包含:Mach-O 64位可执行x86\u 64 如何从10.6上的命令行构建并生成类型为Mach-O executable i386的可执行文件,或者更好地生成包含这两种类型的可执行文件的通用二进制文件 请测试任何建议的解决方案 谢谢, 马特对每个目标使用-arch标志。所以

我指的是以下来源:

构建过程是标准的:
/configure
,然后是
make

如果我在10.5上构建,我会得到一个二进制文件,其
文件包含:
Mach-O可执行文件i386

如果我在10.6上构建,我会得到一个二进制文件,其
文件包含:
Mach-O 64位可执行x86\u 64

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

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

谢谢,

马特

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

gcc -arch i386 -arch x86_64 ...

将用这两种方法构建一个胖二进制文件。我认为默认情况下,gcc构建到目标体系结构,即使用OSX 10.6的x86_64。

默认情况下,使用OSX 10.6分发的gcc版本构建64位二进制文件。默认情况下,随10.5发布的GCC版本构建32位二进制文件

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

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

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

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

从苹果开发者论坛:

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

很好用。

我刚试过这个,但没用。可能是环境变量被./configure覆盖了吗?我假设这不会生成具有“两种”类型的通用二进制文件?@rogerdpack试试看。使用
文件
命令检查二进制文件,查看它包括哪些体系结构。另外,请参见其他答案。
./configure CC="gcc -arch i386" CXX="g++ -arch i386"