我有点惊讶,我无法从头开始找到有关如何使用llvm组合跨架构或跨操作系统编译器的大量信息。 llvm本身就是开箱即用的。那么你只需要从目标系统中收集sysroot,然后以某种方式生成和集成跨平台binutils?
虽然我有大量的随机用例,但我的直接烦恼是CodeSourcery ......基本上已经用于定位arm / linux,在Windows上构建。
答案 0 :(得分:3)
我正在开发基于clang / LLVM的交叉编译工具链。它目前运行在各种Linux平台(ARM,Mips,PowerPC,x86)和Windows x86上。我尝试与当前的LLVM源代码树保持同步,并在它们发布时引入最新版本的binutils,GDB等。(参见http://ellcc.org/blog/?page_id=467)。 我有一些项目的主要设计目标,但其中两个是最重要的。我希望整个工具链能够构建自己,这对所有Linux目标都是如此,并且本着铿锵的精神,我希望尽可能少地支持二进制文件。为此,我构建了binutils,其中包含大多数可执行文件的选项,以支持所有目标。每个处理器都有自己的 as (LLVM消除了对更多内部汇编程序支持可用的需求),但我只构建了一个 ld , objdump , gdb 等,可以处理所有不同的目标。
从干净的源代码安装,我首先使用gcc构建clang / LLVM和binutils / GDB,然后为所有目标构建所有库(C / C ++,compiler-rt等)。第二个可选构建使用新构建的工具进行自我编译。之后,后续构建是自托管。
我在x86 Linux机器上为各种主机构建了所有工具,但理论上每个工具链都应该能够在其他Linux主机或Windows上重新创建。
如果您对预先构建的二进制文件感兴趣,请访问http://ellcc.org/blog/?page_id=20295