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

时间:2011-06-18 12:56:05

标签: linux macos cross-compiling

我花了最后三个星期研究Mac OS X下的交叉开发。我想实现两个单独的结果,但我相信它们可以通过相同的路径到达。 我想

  1. 设置distcc以帮助我使用iMac的旧Gentoo笔记本电脑我最近在家(OS X 10.6,64位原生)我也用于iOS开发,所以Xcode 4工具已经存在;
  2. 开发我的宠物项目,这是x86,x86_64和arm的精灵内核(我会停在这里,因为它是OT)。
  3. 所以,经过我们在这些情况下做的很多思考之后,我想到了达到第一个目标,我需要设置一个i686-pc-linux-gnu工具链(或者是i686- unknown-linux-gnu?)包含所有适当的版本(例如gcc-4.4)并使其可以通过distcc调用。这似乎是一项合理的任务,但不幸的是,似乎有更清晰的工具和指令来为sparc或mips等模糊的arch构建工具链,而不是一个合理更新的资源,如何以最佳方式使用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。

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

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

我不知道今天OS X上的前缀是什么形状,但我能在大约一年前将它安装在朋友的MacBook上。如果您有兴趣,我可以提供有关installation process的更多详细信息,这可能有点棘手。