【问题标题】:Compiling on ARMv8 - Running on ARMv7在 ARMv8 上编译 - 在 ARMv7 上运行
【发布时间】:2016-05-07 22:16:27
【问题描述】:

是否可以在 ARMv8 上编译一个包并在 ARMv7 上运行它?

我在整个建筑方面还没有真正的经验(还)。 我来这个问题是因为我的 Odroid C1+ 由于 RAM 非常有限而无法编译 icinga2。 C2 有 2 GB 的 RAM,在这项任务上可能会做得更好。

但是我可以在我的 C1+ (ARMv7) 上运行 C2 (ARMv8) 编译包吗?

【问题讨论】:

    标签: compilation armv7 building icinga


    【解决方案1】:

    是否可以在 ARMv8 上编译一个包并在 ARMv7 上运行它?

    这称为交叉编译,是生成 ARM 代码的常用方式——只是现在大多数用于 ARM 二进制文件的构建机器可能是 x86_64。但是,如果您有一个针对在 ARMv8 上运行的平台 ARMv7 的编译器,我认为没有问题。

    我在整个建筑方面还没有真正的经验(还)。我来这个问题是因为我的 Odroid C1+ 由于 RAM 非常有限而无法编译 icinga2。 C2 有 2 GB 的 RAM,在这项任务上可能会做得更好。

    你知道什么在编译方面要好得多吗?具有 4GB 以上 RAM、海量 RAM 带宽和高得多的存储带宽的适当 PC,具有高度流水线化的多核 CISC CPU,而不是高能效的 ARM。

    确实,嵌入式系统的软件通常构建在带有交叉编译器的非嵌入式计算机上。在 PC 上为 C1+ 进行交叉编译肯定有不同的方法;我通常建议使用您的 Linux 发行版(如果您正在使用)具有交叉编译包的方法。

    ARMv7 是与 ARMv8 不同的平台,因此在 v8 上从 ARMv7 编译软件与在 x86 上为 ARMv7 编译软件相比没有优势。无论如何,你需要一个交叉编译工具链。

    【讨论】:

    • 哦好吧,话虽如此...我会去学习交叉编译。非常感谢您的翔实回答! :)
    • “在 v8 上从 ARMv7 编译软件与在 x86 上为 ARMv7 编译软件相比没有优势” - 不,它绝对有,因为使用合理的发行版,您应该能够只运行 32 位编译器本机并使用multilib。您是否同样会说“在 x86_64 上从 i386 编译软件与在 POWER8 上为 i386 编译软件相比没有优势”?毕竟,那些运行在“适当的 PC”周围:P
    • @Notlikethat 正是你所说的。如果您可以在 4GHz Power8 计算机和 400MHz pentium II 之间选择来为您的 Intel 386SX 编译软件,那么几乎没有理由使用 Pentium 计算机,尽管它们的架构非常相似。编译绝对不需要任何本机代码执行能力!
    • 就原始性能而言,这是一个公平点;不过,就易用性而言,考虑到对交叉编译的抵抗力,我发现一些项目(例如 perf 工具)能够简单地将 32 位文件系统挂载到 64 位机器上,chroot 到它并在本地运行 32 位工具链非常有价值。
    • @Notlikethat linux-tools 有什么特别之处(perf 通常包含的源包)?我见过有人为 ARMv7 构建它; iirc,OpenEmbedded/Yocto 有一个工作层...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多