Linux 在Mac OS X上构建跨工具链的最佳方法
我花了三周的时间研究MacOSX下的交叉开发。我想获得两个不同的结果,但我相信它们可以通过同样的途径实现。 我想Linux 在Mac OS X上构建跨工具链的最佳方法,linux,macos,cross-compiling,Linux,Macos,Cross Compiling,我花了三周的时间研究MacOSX下的交叉开发。我想获得两个不同的结果,但我相信它们可以通过同样的途径实现。 我想 使用我最近在家里买的iMac(OS X 10.6,64位本机),设置distcc来帮助我的Gentoo笔记本电脑,我也使用iOS开发,所以Xcode 4工具已经存在 开发我的宠物项目,这是一个针对x86、x86_64和arm的elf内核(由于它是OT,我将在这里停止) 因此,在这些案例中我们都做了很多思考之后,我想到了一个想法,为了达到第一个目标,我需要建立一个i686 pc lin
编辑我了解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。这不是一个容易的任务,特别是因为您需要为这么多不同的平台交叉编译 最常用的方法是使用所需的操作系统(例如)运行虚拟机,并安装工作台工具以从中工作。这是非常经常使用的,因为它的设置并不复杂,而且它还使得为目标系统编写、测试和调试代码变得更容易 当然,如果你搜索得足够多,你会发现在Mac OS X上设置工具链和为其他架构编译代码的各种黑客/技巧:
- 这些用途之一,但这意味着没有对MacOSX的官方支持
- 另一个也很有趣的是,它提供了一个.dmg包,其中包含了实现此功能所需的工具
- 您已经提到Gentoo,所以我想您应该看看。Gentoo Prefix允许您在用户定义的目录(=Prefix)中安装小型Gentoo系统。从这里开始,您可以启动一个shell,它允许您使用portage(=Gentoo的包系统),这应该使您能够安装必要的工具
我不知道今天OSX上的前缀是什么形状,但大约一年前我就可以把它安装到朋友的MacBook上了。如果您感兴趣,我可以提供更多关于的详细信息,这可能有点棘手。虚拟机方法可能适用于distcc案例(在某个时候,我确实考虑过它,然后出于一些合理的原因将其丢弃),但我认为对于另一个案例,它会有点尴尬,因为我必须在网上导出我的源目录,将其装载到VM中,并从VM启动构建过程。工作流程并不顺畅。预构建的解决方案通常是不可行的,因为对于distcc,您需要完全相同的次要版本,即4.4.x和4.5.y意味着kaboom。我认为在这种情况下测试预构建的解决方案是值得的。另一种方法是自己构建工具:我尝试过,但不久就失败了。然后我尝试了crosstool ng,它似乎工作得很好,尽管它引起了大量的挫折和困惑。这可能不是它的错,而是MacOSX的错,它是一个BSD,有许多无法解释的假设,比如不区分大小写的文件系统。到目前为止,这似乎是最有希望的方法。两者都不可行。Buildroot似乎与SL/Lion不太兼容,另一个版本不提供我需要的gcc-4.4版本。不过,感谢您的提示。我已经尝试了Prefix,不幸的是它安装了一个本机工具链(特别是针对x86_64-apple-darwin10的工具链)。Gentoo中有一个很好的工具叫crossdev,但它在Prefix中没有出现。让我看看build.log。