我正在尝试为工作中的项目构建通用二进制文件,但我似乎无法正确设置Xcode。
我熟悉Apple文档,但显然我没有正确阅读。
有问题的Xcode构建选项似乎是:
在我的设置中,我有以下有效架构:i386 ppc ppc64 ppc7400 ppc970 x86_64。
如果我使用以下选项,我会得到 i386 和 ppc970 的二进制文件:
我有几个问题:
显然,我需要一个带有ppc7400的二进制文件来处理我们测试的Mac Mini。 Mini有一个G4,运行OSX 10.5.8。据我所知,带有ppc7400的二进制文件可以工作,但不能仅使用ppc970。
我已经尝试了上述构建选项的几种组合,包括将我的Base SDK更改为10.4u。上面的配置是唯一一个甚至构建的配置。其他构建失败,通常是因为无法识别头文件或明显可用的#defines。例如,如果我将编译器更改为gcc 4.2,由于#include_next指令而没有明确的路径来纠正标头,因此我在搜索stdarg.h时遇到错误。如果我将我的Base SDK删除到4.0,尽管没有更改任何包含,仍然不会识别#define FSIZE long long。
我真的很感激你能给我的任何见解。
编辑更新
感谢您的信息。我现在明白了旗帜。但是我得到了一个奇怪的结果。
这些是我的构建标志:
GCC_VERSION = 4.0 MACOSX_DEPLOYMENT_TARGET = 10.4 SDKROOT = macosx10.5 GCC_MODEL_TUNING = G3
这会生成具有arch'ppc'的目标文件(.o),如lipo所示。所有包含的库和框架都是'ppc'或'ppc7400'(再次由lipo显示)。但是,最终版本是'ppc970'。
我仔细检查了这一点,以确保我得到了一切。任何人都可以想到ppc架构差异的原因吗?
我甚至创建了一个新项目(Hello World)并将其链接到第一个项目的所有库和框架。 Hello构建为'ppc'而非'ppc970'。
这对我来说毫无意义。
答案 0 :(得分:4)
ppc970
== G5
。如果您需要支持G4
,那么只需为ppc7400
构建。
32-bit Universal
(或Standard (32/64-bit Universal)
,如果适用),而不是弄乱单个体系结构设置,这应该可以为您提供所需的内容。
答案 1 :(得分:1)
在目标设置中进行以下更改..
GCC_MODEL_PPC64 = NO
即,取消选中“使用64位整数数学”。
启用将打开64位。所以它将是G5开始......