我花了最后三个星期研究Mac OS X下的交叉开发。我想实现两个单独的结果,但我相信它们可以通过相同的路径到达。 我想
所以,经过我们在这些情况下做的很多思考之后,我想到了达到第一个目标,我需要设置一个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。
答案 0 :(得分:5)
这不是一件容易的事,特别是因为你想要为很多不同的平台进行交叉编译。
最常用的方法是使用所需的操作系统运行虚拟机(例如VirtualBox,Parallels,VMWare Fusion)并安装工作台工具从中工作。这非常有用,因为它的设置并不复杂,而且还可以更容易地为目标系统编写,测试和调试代码。
当然,如果你搜索足够多,你会发现各种黑客/技巧在Mac OS X上设置工具链并为其他架构编译代码:
其中一个使用Buildroot,但这意味着没有官方支持Mac OS X.
另一个有趣的是,提供了一个 .dmg 包,其中包含compile for Linux on MacOS X所需的工具。
答案 1 :(得分:1)
你已经提到过Gentoo,所以我认为你应该看看Gentoo Prefix。 Gentoo Prefix允许您在用户定义的目录(=前缀)中安装一个小的Gentoo系统。从那里,您可以启动一个shell,它允许您使用portage(= Gentoo的包系统),这将使您能够安装必要的工具。
我不知道今天OS X上的前缀是什么形状,但我能在大约一年前将它安装在朋友的MacBook上。如果您有兴趣,我可以提供有关installation process的更多详细信息,这可能有点棘手。