编写依赖于 CPU 架构的软件时,例如在 x86 上运行的 C 代码或在 ARM CPU 上运行的 C 代码。通常有两种方法可以编译此代码,要么交叉编译到 ARM CPU 架构(例如,如果您在 x86 系统上进行开发),要么将代码复制到本机架构 CPU 系统并进行本机编译。
我想知道本机方法与交叉编译方法相比是否有好处?我注意到 Fedora ARM 团队正在使用慢速/低功耗 ARM 设备的构建服务器集群来“本地”编译他们的 Fedora ARM spin……当然,Red Hat 支持的项目可以访问一些运行 x86 CPU 的强大构建服务器可以在 1/2 的时间内完成工作...那么他们为什么选择呢?我通过交叉编译我的软件错过了一些东西吗?
主要好处是所有./configure
本地运行时不需要调整脚本。如果您使用阴影rootfs,那么您仍然有配置在运行uname
检测CPU类型等。例如,参见这个问题. pkgconfig
和其他工具试图缓解跨建筑,但包通常会得到本土建筑 on x86先纠正,然后也许本土建筑 on ARM. 跨建筑可能会很痛苦,因为每个包可能都需要单独调整。
Finally, if you are doing profile guided optimizations and running test suitesas per Joachim, it is pretty much impossible to do this in a cross build environment.
编译速度ARM明显比人类快包构建器, read configure
, edit configure
,重新运行配置、编译、链接周期。
这也非常适合持续集成战略。各种套餐,特别是图书馆,可以快速构建/部署/测试。的测试图书馆可能涉及数百个依赖包。手臂Linux 发行版在升级和修补可能有的基础库时通常需要原型更改hundreds至少需要重新测试的依赖包。由计算机完成的缓慢循环总是比人工干预后的快速编译要好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)