3

我正在尝试为工作中的项目构建通用二进制文件,但我似乎无法正确设置 Xcode 来执行此操作。

我熟悉有关此的 Apple 文档,但显然我没有正确阅读它。

有问题的 Xcode 构建选项似乎是:

  • 架构
  • 基础 SDK
  • C/C++ 编译器版本
  • Mac OS X 部署目标

在我的设置中,我有以下有效架构:i386 ppc ppc64 ppc7400 ppc970 x86_64。

如果我使用以下选项,我会得到一个带有i386ppc970的二进制文件:

  • 架构:i386 ppc
  • 基础 SDK:Mac OS X 10.5
  • C/C++ 编译器版本:GCC 4.0
  • Mac OS X 部署目标:Mac OS X 10.5

我对此有几个问题:

  1. 为什么是 ppc970 而不是 ppc7400(或简单的 ppc)?
  2. ppcs(ppc、ppc64、ppc7400、ppc970)有什么区别?
  3. 如何获得任何 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”。

这对我来说毫无意义。

4

2 回答 2

4

ppc970== G5。如果您需要支持,G4那么只需为ppc7400.

但是,您可以从弹出菜单中选择32-bit Universal(或Standard (32/64-bit Universal),如果合适的话),而不是弄乱单个架构设置,这应该可以满足您的需求。

于 2010-06-23T22:43:11.967 回答
1

在目标设置中进行以下更改..

GCC_MODEL_PPC64 = NO

即,取消选中“使用 64 位整数数学”。

启用将打开 64 位。所以它将是G5以后..

于 2010-12-10T13:57:27.930 回答