在Mac OS X上构build交叉工具链的最佳方法

我花了三个星期的时间研究Mac OS X下的交叉开发。我想要获得两个单独的结果,但我相信他们可以通过相同的途径达成。 我要

  1. 设置distcc来帮助我使用最近在家中使用的iMac(OS X 10.6,64位本机)的旧Gentoo笔记本电脑,我也用于iOS开发,所以Xcode 4工具已经存在;
  2. 开发我的宠物项目,这是一个精灵内核的x86,x86_64,和武装(我会停在这里,因为它是OT)。

所以,经过我们在这些情况下所做的大量思考之后,我想出了一个想法,为了达到第一个目标,我需要build立一个i686-pc-linux-gnu工具链(或者是i686-unknown-linux -gnu?)与所有适当的版本(如gcc-4.4),并使其可由distcc调用。 这似乎是一个合理的任务,但不幸的是似乎有更清晰的工具和指令来build立像sparc或mips这样的晦涩难懂的工具链,而不是一个合理的更新的资源如何去x86最好的方式。 因此,第一个问题:有没有人成功地build立这样一个工具链,感觉像分担痛苦? 🙂

第二个目标。 我目前的工作台是由Gentoo在i686笔记本电脑(是的,与第一个目标相同)上制作的,我使用QEMU来testing它(它的gdb集成非常棒)。 我真正想做的就是在旅途中继续使用笔记本电脑(我做了很多通勤),并在家里继续工作和testingiMac(git在这方面非常棒)。 因此,第二个问题:有没有人做过这样的事情,想分享?

我真的很感激任何input。 认真。

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

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

最常用的方法是运行带有所需操作系统的虚拟机 (例如VirtualBox , Parallels , VMWare Fusion ),并安装工作台工具。 这是非常有用的,因为它设置起来并不复杂,而且也更容易为目标系统编写,测试和调试代码。

当然,如果你足够的搜索,你会发现在Mac OS X上设置工具链的各种窍门和技巧,并编译其他体系结构的代码:

  • 其中一个使用Buildroot ,但这意味着没有官方支持Mac OS X.

  • 另一个也很有趣的提供了一个.dmg包,其中包含了在MacOS X上编译Linux所需的工具。

你已经提到了Gentoo,所以我想你应该看看Gentoo Prefix 。 Gentoo Prefix允许您在用户定义的目录(=前缀)中安装一个小型的Gentoo系统。 从那里,你可以启动一个shell,让你使用portage(= Gentoo的包系统),它应该使你能够安装必要的工具。

我不知道今天OS X的Prefix是什么形状,但是我可以在一年前或之前将它安装在朋友的MacBook上。 如果您有兴趣,我可以提供有关安装过程的进一步细节,这可能有点棘手。