我如何从 Mac 交叉编译到晦涩的 Linux 发行版(嵌入式)?

How do I cross compile from a Mac to an obscure Linux distribution (embedded)?

我看到了这个问题How to cross compile from Mac OS X to Linux x86?但我的目标看起来像这样

$ uname -a
Linux MyDevice 4.9.127-svn20747 #1 SMP Thu Jan 17 05:46:18 UTC 2019 x86_64 GNU/Linux

less /proc/cpuinfo

的一些输出
processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 54
model name  : Intel(R) Atom(TM) CPU D2701   @ 2.13GHz
stepping    : 1
microcode   : 0x10d
cpu MHz     : 2127.900
cache size  : 512 KB

所以我怀疑是否有任何现成的解决方案。

如何在 Atom CPU 上从 Mac 编译为嵌入式 Linux 运行?

你的目标是64位x86平台,这当然不难理解。您链接的 SO 问题是最好的起点,在您的嵌入式板上启动 linux 发行版的 VM,在其中编译并将可执行文件 scp 到板上(或者只在板子本身上编译,你的目标并没有完全动力不足)

这就是我在 Mac 运行 带有 NAS OS-VM 的 VirtualBox 上编译的(交叉编译?我不太确定我做了什么。)bonnie++。我认为这应该适用于大多数可以使用简单 ./configure; make 过程编译的软件。

  1. 从这里NAS OS SDK VM (NASOS_SDK-0.7.ova) 下载https://www.seagate.com/nasos/SDK/0.7/downloads/index.html

  2. 开始遵循这些说明 https://www.seagate.com/nasos/SDK/0.7/multi-arch/index.html¹ until I reached the section Cross Compiling where I was redirected to https://www.seagate.com/nasos/SDK/0.7/cross/index.html

  3. 跳到以 开头的段落为了 cross-compile 我们的 hello 程序 并执行描述的三个 export那里。 TOOLCHAIN_PREFIX 可以在 /opt 中的相应目录中找到:例如,在 x86_64-seagate-nasos-sdk 中有一个目录 x86_64-seagate-linux-gnu - 使用该名称作为 TOOLCHAIN_PREFIX(为什么哦,为什么指南中没有包含这些信息???)。

  4. 按照说明执行 configuremake

完成。

如果有人知道如何执行静态链接,请添加评论。

¹ 如果您尝试编译 ./configure; make 已经可以运行的内容,我认为没有必要这样做。

https://www.seagate.com/nasos/SDK/0.7/cross/index.html

NAS OS SDK 虚拟机