【问题标题】:Cause of change from `-arch ppc` to `-arch ppc7400`?从 `-arch ppc` 更改为 `-arch ppc7400` 的原因?
【发布时间】:2015-08-29 00:24:28
【问题描述】:

这与Git 2.4.8 built from kernel.org sources and missing HTTP/HTTPS helpers有关。

我发现 cURL 的库有效地配置了-arch ppc -arch ppc64,但构建的胖库具有架构-arch ppc7400 -arch ppc64。这会导致 Git 配置/链接失败,因此 Git 的配置 [静默] 删除 cURL,这 [静默] 删除 HTTP/HTTPS 帮助程序。

真正奇怪的是其他八个左右的依赖库在使用相同的步骤构建时都很好。依赖库有两个 -arch ppc -arch ppc64 按照指示。其他库包括 Zlib、Bzip、iConv、PCRE 和 OpenSSL。

我已经用 $ grep -IR -i "\-arch ppc7400" *$ grep -IR -i "ppc7400" *$ grep -IR -i "\-arch" * 对 cURL 源进行了 grep,但我找不到更改的源。

-arch ppc 更改为-arch ppc7400 的原因可能是什么?

【问题讨论】:

    标签: git macos curl autotools osx-leopard


    【解决方案1】:

    这不是特定于 git 或 curl 的,实际上是编译器的有意功能。编译器注意到您在 OS X 10.5 Leopard 上运行。 ppc7400 是 PowerPC G4 处理器的架构,这是运行 Leopard 所需的最低处理器,因此编译器已将您对-arch ppc 的请求更改为-arch ppc7400,以便生成将在支持的最低计算机上运行的最佳代码.如果你想支持运行早期 G3 处理器的 Mac,那么这也意味着你需要支持在 OS X 10.4 上运行,这是支持 G3 的最后一个 OS X 版本。为此,请将-mmacosx-version-min=10.4 标志传递给编译器,或将MACOSX_DEPLOYMENT_TARGET 环境变量设置为10.4

    我注意到从 ppc 到 ppc7400 的转换只有在您构建通用架构时才会发生(即,如果您同时也在构建另一个架构)。我不确定为什么它只为单个拱门构建时不这样做。

    【讨论】:

    • 真正奇怪的是八个(左右)其他依赖库使用相同的步骤构建良好。我不明白为什么我只在 cURL 下看到问题,而不是 Zlib、Bzip、iConv、PCRE、OpenSSL 等...
    • @jww 很可能工作依赖项的构建脚本已经设置了较低的MACOSX_DEPLOYMENT_TARGET
    【解决方案2】:

    从 -arch ppc 更改为 -arch ppc7400 的原因可能是什么?

    Ryan 关于 是正确的“...编译器已将您对 -arch ppc 的请求更改为 -arch ppc7400 以生成最佳代码”。它记录在 GCC 手册 3.17.10 Darwin Options

    但是,答案中的其他一些陈述不是很准确,所以我需要提供一个答案来清除它们,以防其他人发现问题和答案有用。首先,硬件是 Mac G5,而不是 G4。

    其次,不清楚行为是硬编码到编译器中还是来自 specs 文件。

    第三,我从标准的./configure && make 遇到了这个问题; not 通过调用通用或胖二进制文件。如果./configure && make 在所有库和程序中始终为PPCPPC970PPC7400 生成代码,我会很高兴。我切换到通用或胖二进制文件试图完全控制情况。

    第四,Mac G4 和 OS X 10.4 与此问题无关。

    最后,在没有 OS X SDK 特定选项的情况下,问题可以通过以下方式轻松解决:

    export CFLAGS="-force_cpusubtype_ALL"
    

    -force_cpusubtype_ALL 可能需要LDFLAGS,但这取决于库如何使用 Autotools。对于大多数库,在CFLAGS 中提供-force_cpusubtype_ALL 就足够了。 PCRE 是规则的例外。

    【讨论】:

      猜你喜欢
      • 2018-10-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2022-08-10
      • 2020-04-20
      • 2018-06-03
      相关资源
      最近更新 更多