我正在尝试为工作中的项目构建通用二进制文件,但我似乎无法正确设置 Xcode 来执行此操作。
我熟悉有关此的 Apple 文档,但显然我没有正确阅读它。
有问题的 Xcode 构建选项似乎是:
- 架构
- 基础 SDK
- C/C++ 编译器版本
- Mac OS X 部署目标
在我的设置中,我有以下有效架构:i386 ppc ppc64 ppc7400 ppc970 x86_64。
如果我使用以下选项,我会得到一个带有i386和ppc970的二进制文件:
- 架构:i386 ppc
- 基础 SDK:Mac OS X 10.5
- C/C++ 编译器版本:GCC 4.0
- Mac OS X 部署目标:Mac OS X 10.5
我对此有几个问题:
- 为什么是 ppc970 而不是 ppc7400(或简单的 ppc)?
- ppcs(ppc、ppc64、ppc7400、ppc970)有什么区别?
- 如何获得任何 ppc 的二进制文件?
显然,我需要一个带有 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
这将生成具有拱形“ppc”的目标文件 (.o),如 lipo 所示。所有包含的库和框架都是“ppc”或“ppc7400”(再次如 lipo 所示)。但是,最终版本是“ppc970”。
我已经非常仔细地检查了这一点,以确保我得到了一切。谁能想到 ppc 架构差异的原因?
我什至创建了一个新项目(Hello World)并将其链接到第一个项目的所有库和框架。你好构建为“ppc”而不是“ppc970”。
这对我来说毫无意义。