从`-arch ppc`变为`-arch ppc7400`的原因?

时间:2015-08-29 00:24:29

标签: git macos curl autotools osx-leopard

这与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来源,但我无法找到更改的来源。

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

2 个答案:

答案 0 :(得分:3)

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

我注意到,只有在构建通用的情况下(例如,如果您还在同时构建另一个体系结构),才会发生从ppc到ppc7400的转换。我不确定为什么只在建造一个拱门时不会这样做。

答案 1 :(得分:0)

  

从-arch ppc到-arch ppc7400的变化原因是什么?

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

然而,答案中的其他一些陈述并没有完全达到目标,所以我需要提供一个答案来清除它们以防其他人发现问题和答案有用。首先,硬件是Mac G5,而不是G4。

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

第三,我从标准./configure && make中遇到了这个问题;和通过调用通用或胖二进制文件。如果所有图书馆和计划中的./configure && make始终为PPCPPC970PPC7400生成代码,我会很高兴。为了完全掌控局势,我转而使用普通或胖二进制文件。

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

最后,通过使用:

,无需OS X SDK特定选项即可轻松解决该问题
export CFLAGS="-force_cpusubtype_ALL"
-force_cpusubtype_ALL中可能需要

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