linux - 在 Mac OS X 上构建交叉工具链的最佳方式

标签 linux macos cross-compiling

过去三周我一直在研究 Mac OS X 下的交叉开发。我想获得两个不同的结果,但我相信它们可以通过相同的路径实现。 我要

  1. 设置 distcc 来帮助我使用我最近在家获得的 iMac(OS X 10.6,64 位 native )的旧 Gentoo 笔记本电脑,我也将其用于 iOS 开发,因此 Xcode 4 工具已经存在;
  2. 开发我的宠物项目,它是一个用于 x86、x86_64 和 arm 的 elf 内核(我会在这里停下来,因为它是 OT)。

所以,在我们都在这些情况下做了很多思考之后,我想到了要达到第一个目标我需要设置一个 i686-pc-linux-gnu 工具链(或者是 i686- unknown-linux-gnu?) 与所有适当的版本(例如 gcc-4.4)并使其可由 distcc 调用。这似乎是一项合理的任务,但不幸的是,似乎有更清晰的工具和说明来为 sparc 或 mips 等晦涩的拱门构建工具链,并且没有关于如何以最佳方式进入 x86 的单一合理更新资源。因此,第一个问题:是否有人成功构建了这样一个工具链并且愿意分担痛苦? :)

第二个目标。我当前的工作台是在 i686 笔记本电脑(是的,与第一个目标相同)上由 Gentoo 组成的,具有所有常规开发内容,我使用 QEMU 对其进行测试(它的 gdb 集成非常棒)。我真正想做的是在旅行时继续使用笔记本电脑(我经常上下类),并在我回家时继续在 iMac 上工作和测试(git 在这方面很棒)。因此,第二个问题:有没有人做过这样的事情并想分享?

我非常感谢任何意见。说真的。

编辑 我知道 MacPorts、crosstool 和 crosstool-ng。我尝试从 MacPorts 安装 i386-elf-binutils 2.18 只是为了发现我的笔记本电脑中有 2.20。此外,我无法让 gcc44 生成 i686-pc-linux-gnu elf 对象,并且使用 i386-elf-gcc 不是一个选项,因为我需要 4.4,而打包的是 4.3。

最佳答案

这不是一件容易的事,特别是因为你想为这么多不同的平台交叉编译。

最常用的方法是使用所需的操作系统(例如 VirtualBoxParallelsVMWare Fusion)运行虚拟机,然后安装您的工作台工具以在其中工作。这是非常常用的,因为它设置起来并不复杂,而且还可以更轻松地为/从目标系统编写、测试和调试代码。

当然,如果你搜索得足够多,你会发现各种黑客/技巧来在 Mac OS X 上设置工具链并为其他架构编译代码:

  • 这些用途之一 Buildroot ,但这意味着没有对 Mac OS X 的官方支持。

  • 另一个也很有趣,它提供了一个.dmg 包,其中包含compile for Linux on MacOS X 所需的工具。 .

关于linux - 在 Mac OS X 上构建交叉工具链的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396165/

相关文章:

linux - Haskell 32 到 64 位交叉编译

linux - 使用公共(public) SSH key 连接到本地主机失败

linux - 在 Python 2.7 中编码时如何处理 Linux 上带空格的路径?

ios - 自动创建 Xcode 项目 (.xcodeproj)

macos - 为什么 Postgres.app 不启动 psql

c++ - 与 Boost 日志的交叉编译链接期间未解析的符号

交叉编译libjson-c : Make unsuccessful in libjson-c, Linkhash.c警告

交叉编译Raspberry pi 2错误

c - 为什么在我的程序中 "cat"一个FIFO特殊文件或创建一个FIFO特殊文件后没有出现shell提示?

objective-c - 如何将静态 NSFolder 图像添加到 cocoa 绑定(bind)表