这与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的变化的原因是什么?
发布于 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的转换只有在构建通用的时候才会发生(也就是说,如果同时构建另一个体系结构的话)。我不知道为什么它不这样做,当只建造一个单一的拱门。
发布于 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在所有库和程序中一致地为PPC、PPC970或PPC7400生成代码,我会很高兴的。为了完全控制局面,我选择了通用的或胖的双星。
第四,MacG4和OSX10.4与问题无关。
最后,在没有OS特定选项的情况下,可以很容易地解决这个问题,方法是:
export CFLAGS="-force_cpusubtype_ALL"-force_cpusubtype_ALL在LDFLAGS中可能是必需的,但它取决于库如何使用Autotools。对于大多数库来说,在CFLAGS中提供CFLAGS就足够了。PCRE是该规则的例外。
https://stackoverflow.com/questions/32281472
复制相似问题