在 Mac OS X 上如何为 Linux 编译交叉编译器?

7

我在互联网上阅读了许多关于在Mac OS X上为Linux创建交叉编译器的文档,但似乎没有一篇能够正常工作。

似乎没有人能够帮助我回答这个问题:如何让GMP与GCC 4.5.2配合使用

是否有更简单的方法来创建交叉编译器?


对于 ARM 和 AArch64 Linux 目标,我维护了预编译的 OSX 工具链可供下载:https://thinkski.github.io/osx-arm-linux-toolchains - thinkski
2个回答

7
您需要执行以下操作:
  1. 安装xcode基础编译工具。
  2. 安装可选的xcode命令行工具。
  3. 安装homebrew。
  4. 安装homebrew编译工具。
    4.1 brew install crosstool-ng mpfr gmp grep
    4.2 brew tap homebrew/dupes
  5. 使用“磁盘工具”创建一个区分大小写的卷。
  6. 使用此卷来构建工具链本身。
    6.1 生成基本配置(对我来说是arm cortex a8)。
    6.1.1 ct-ng arm-cortex_a8-linux-gnueabi
    6.2 使用menuconfig(ct-ng menuconfig)调整配置。
    6.2.1 禁用Fortran和Java(c编译器)。
    6.2.2 关闭静态链接(c编译器)。
    6.2.3 将路径更改为您上面创建的卷上的路径(路径和杂项选项)。
    6.2.4 删除dmalloc(调试设施)。
    6.3 调用构建:
    6.3.1 ulimit -n 1024
    6.3.2 ct-ng build
非常感谢crosstools-ng清单。

那听起来很酷。但是为什么我们需要一个新的卷来构建工具链呢? - cxwangyi
1
嗨cxwangyi - 如果我没记错的话,我这样做是为了确保音量区分大小写。祝你好运。如果你遇到困难,我发现crosstools-ng列表非常支持。而且它很酷 :) - user176145

4
要为与构建主机不同的架构构建二进制文件,您需要比仅使用交叉编译器更多的东西-您需要一个完整的工具链,这可能很难创建,正如您可能已经发现的那样。
一些方法:
- 在虚拟机中使用适当的Linux发行版,如VirtualBox。如果您只想在MacOSX / x86_64主机上为Linux / i386构建二进制文件,则这是我认为最简单,最安全和最干净的解决方案。当然,它不是交叉编译器,但它可以工作,并且具有您可以实际测试可执行文件的额外优势。 - 使用脚本(例如crosstool-NG(原始的crosstool的后代))自动构建工具链-肯定比自己构建要容易,尽管您可能不得不妥协使用稍旧的编译器版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接