Clang 你如何为自己组装一个交叉编译器?

Clang 你如何为自己组装一个交叉编译器?,clang,llvm,cross-compiling,Clang,Llvm,Cross Compiling,我有点惊讶,我找不到多少关于如何使用llvm从头开始构建跨体系结构或跨操作系统编译器的信息。llvm本身就是开箱即用的。然后您只需要从目标系统收集sysroot,然后以某种方式生成并集成跨平台的binutils 虽然我有大量的随机用例,但我最讨厌的是CodeSourcery。。。基本上不再以arm/linux为目标,构建在Windows上 我正在开发一个基于clang/LLVM的交叉编译工具链。它目前运行在各种Linux平台(ARM、Mips、PowerPC、x86)和Windows x86上。

我有点惊讶,我找不到多少关于如何使用llvm从头开始构建跨体系结构或跨操作系统编译器的信息。llvm本身就是开箱即用的。然后您只需要从目标系统收集sysroot,然后以某种方式生成并集成跨平台的binutils


虽然我有大量的随机用例,但我最讨厌的是CodeSourcery。。。基本上不再以arm/linux为目标,构建在Windows上

我正在开发一个基于clang/LLVM的交叉编译工具链。它目前运行在各种Linux平台(ARM、Mips、PowerPC、x86)和Windows x86上。我试图跟上当前的LLVM源代码树,并在发布时引入最新版本的binutils、GDB等。 我对这个项目有几个主要的设计目标,但其中两个是最优先考虑的。我希望整个工具链能够自行构建,这适用于所有Linux目标,本着clang的精神,我希望尽可能少地支持二进制文件。为此,我为大多数可执行文件构建了带有选项的binutils,以支持所有目标。每个处理器都有自己的as(随着越来越多的内部汇编程序支持可用,LLVM不再需要它),但我只构建了一个ldobjdumpgdb,可以处理所有不同的目标

从干净的源代码安装开始,我首先使用gcc构建clang/LLVM和binutils/GDB,然后为所有目标构建所有库(C/C++、编译器rt等)。第二个可选构建使用新构建的工具进行编译。在这之后,后续构建是自托管的

我在x86Linux机器上为各种主机构建了所有工具,但理论上,每个工具链都应该能够在其他Linux主机或Windows上重新创建自己


如果您对预构建的二进制文件感兴趣,可以在

上找到它们,我认为这是一个好问题(尽管您没有在正文中真正说明)。它可能会受到旧堆栈溢出的欢迎。在当前版本的堆栈溢出上,它可能会因为太宽而关闭。是的,有点像。但我想说的是,没有太多的意见,这可能是坏堆栈溢出问题的主要烦恼。我真的很想特别了解LLVM/clang。我注意到你编辑了我的主题以去掉它。至于编辑,请参阅。像Tag:和Tag-这样的标题必须清理。嘿,酷,谢谢你指出这一点,我不打算讨论这个社区(但我不同意,因为它迫使人们像电脑一样,不读英语就集成不同的信息)。有趣的是,你建议我不要重复这个标签,而是应该重复这个问题。。。。(对不起,我忍不住)事实上我想我的问题应该是“你是如何把东西拼在一起的。”然后你可以看看标签,找出答案!哇!我猜,考虑到你的项目,除了从头开始构建库之外,你没有看到任何其他的前进方向?我只是假设有一些工具可以从目标收集sysroot(要么是巨大的/完整的,要么是基于规范的子集)。我只是收集了构建clang/LLVM、binutils和gdb所需的库。我想从源代码构建,而不是为所有目标处理器引入预编译库。