首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从‘-arch ppc`’改为‘-arch ppc`7400’的原因?

从‘-arch ppc`’改为‘-arch ppc`7400’的原因?
EN

Stack Overflow用户
提问于 2015-08-29 00:24:28
回答 2查看 194关注 0票数 0

这与GIT2.4.8由kernel.org源构建,缺少HTTP/HTTPS帮助程序有关。

我发现cURL的库有效地配置了-arch ppc -arch ppc64,但是构建的fat库具有-arch ppc7400 -arch ppc64体系结构。这会导致Git配置/链接失败,因此Git的配置正在悄悄地删除cURL,后者正在悄悄地删除HTTPS帮助程序。

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

我已经用$ grep -IR -i "\-arch ppc7400" *$ grep -IR -i "ppc7400" *$ grep -IR -i "\-arch" *$ grep -IR -i "\-arch ppc7400" *源代码进行了说明,但是我找不到更改的来源。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-29 00:45:24

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

我注意到从ppc到ppc7400的转换只有在构建通用的时候才会发生(也就是说,如果同时构建另一个体系结构的话)。我不知道为什么它不这样做,当只建造一个单一的拱门。

票数 3
EN

Stack Overflow用户

发布于 2015-08-31 01:21:03

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

Ryan在“.编译器将您对-arch ppc的请求更改为-arch ppc7400以生成最佳代码”方面是正确的。它被记录在GCC手册3.17.10达尔文备选方案上。

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

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

第三,我是从一个标准的./configure && make中体验到这个问题的;而不是通过调用一个通用的或胖的二进制文件。如果./configure && make在所有库和程序中一致地为PPCPPC970PPC7400生成代码,我会很高兴的。为了完全控制局面,我选择了通用的或胖的双星。

第四,MacG4和OSX10.4与问题无关。

最后,在没有OS特定选项的情况下,可以很容易地解决这个问题,方法是:

代码语言:javascript
复制
export CFLAGS="-force_cpusubtype_ALL"

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32281472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档