【发布时间】:2013-05-06 16:58:15
【问题描述】:
在编写依赖于 CPU 架构的软件时,例如在 x86 上运行的 C 代码或在 ARM cpus 上运行的 C 代码。通常有两种方法可以编译此代码,或者交叉编译到 ARM CPU 架构(例如,如果您正在 x86 系统上开发)或将代码复制到本机架构 cpu 系统并天真地编译。
我想知道本机方法与交叉编译方法相比是否有好处?我注意到 Fedora ARM 团队正在使用一个由慢速/低功耗 ARM 设备组成的构建服务器集群来“天真地”编译他们的 Fedora ARM spin……当然,由 Red Hat 支持的项目可以访问一些运行 x86 cpus 的强大构建服务器这可以在 1/2 的时间内完成工作......那么他们为什么选择呢?交叉编译我的软件是否遗漏了什么?
【问题讨论】:
-
如果您认为 C 代码是 CPU 架构相关的,那么您肯定错过了一些东西。我想你会发现许多优秀的开发人员会尝试将他们依赖于实现的代码与他们的可移植、严格兼容的代码分开,并且通常会尝试尽可能多地编写可移植的代码。跨度>
-
@undefinedbehaviour 我认为他的问题的精神在于构建一个复杂的包是否缺少某些东西。
-
我的猜测是他们想测试机器是否可以为自己构建工作二进制文件。买一台 linux 机器会很讨厌,只是注意到你也需要一台 PC 来构建/更新内核和二进制文件。这也是测试您构建的操作系统稳定性的一种很好的方法,完整的编译会强调多个系统。
-
就这个问题而言,我专门谈论的是依赖于 CPU 架构的软件。如
gcc -march=armv6等。 -
@JoachimIsaksson 好点;尽管您可以使用
qemu进行测试。但随后他们缓慢的过程开始发挥作用。
标签: c arm native cross-compiling