【问题标题】:Running armhf debian 9 (stretch) inside docker on arm64 debian 9 system在 arm64 debian 9 系统上的 docker 内运行 armhf debian 9 (stretch)
【发布时间】:2018-03-13 03:08:36
【问题描述】:

我最近尝试使用dpkg-buildpackage 在一些只有 2 GB RAM 的低端 ARM 板上本地编译一些 Debian 软件包。 CMake 构建运行了相当长的一段时间,但越来越慢,直到由于内存不足而中断(几个小时后)。这是因为应用程序的代码是相当复杂的 C++ 代码,其中包含很多东西并且几乎每一个都静态链接。很遗憾,这无法更改。

我现在打算在一些大型云 ARM 服务器(96 核,128 GB RAM)上运行它,但它运行一些 arm64 Debian 9。

是否可以在某些 Debian 9 arm64 服务器上运行 Debian 9 armhf 系统?

如果是,应该如何设置。

【问题讨论】:

  • 很遗憾,包括 Cavium ThunderX 在内的一些 64 位 ARM CPU 仅支持 64 位。我没有成功找到支持 32 位的 ARM 云服务器。
  • 谢谢,这个问题正是我现在看到的。 Qemu 似乎也无法在该云服务器上运行它。这就是 qemu-debootstrap 在阶段 1 之后返回的内容:I: Running command: chroot stretchtest /debootstrap/debootstrap --second-stage chroot: failed to run command ‘/debootstrap/debootstrap’: Exec format error
  • 不是我的问题的答案,但我的问题的解决方案是使用 Clang/LLVM 进行构建。它使用的内存比 GCC 少得多,并最终成功编译了整个项目,但它抱怨一些隐式转换,需要通过显式 static_cast 修复才能工作。

标签: docker arm embedded-linux arm64


【解决方案1】:

在 ARMv8 高端服务器(例如 Cavium Thunder X)上,无法运行 armhf 代码,因为这些 SoC 仅支持 AArch64,但 QEMU 似乎没有意识到这一点。如果您尝试使用 QEMU(例如使用 qemu-debootstrap)运行 chroot,它也会失败。我相信,可以改进 QEMU 以检测这种情况并正确模拟 32 位 ARM,但显然它没有。

我相信,在同时支持 AArch32 和 AArch64 的低端 ARM-v8-SoC(例如 Cortex-A53)上,它应该可以开箱即用。示例单板计算机是 Raspberry 3 和 Pine64。一旦我有这样的系统可用,我会尝试并编辑这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多