LLVM编译器工具链中有一个与普通的gcc兼容的gcc。使用llvm- of的优点是它可以达到任意的目标,这意味着当你试图编译成一个随机的架构,比如说mips-apple-darwin时,正常的gcc会说没有这样的目标。然而,在mips处理器上,实际上,gcc将为Mac构建一个编译器。
然而,这里有一个问题:要构建到随机目标,您需要已经为该目标构建了binutils。因此,如果您有一个llvm可以编译到的目标,但是binutils不能,那么您就不能创建编译器,因为GNU Binutils不支持这个目标。
所以..。这里有一个问题:有没有与GNU Binutils兼容的等效的llvm-binutils,比如llvm- compatable?(意思是构建到任意目标,而不是列表中的目标。)
编辑:
所谓武断,我的意思是,我不是在运行llvm-gcc时选择目标,而是在编译llvm-gcc时选择目标。意思:如果我试图为mips-apple-darwin编译GCC,我会得到一个不支持的目标。但是如果我为mips-apple-darwin构建llvm- long,那么只要我有mips-apple-darwin-as和mips-apple-darwin-ld,它就可以工作。
发布于 2011-03-09 15:39:39
据我所知,LLVM不能针对任意目标进行编译。你必须有适合你的目标的所有的包含和定义,通常,llvm有一个后端来为你的目标生成代码。阅读“我能否将C或C++代码编译成独立于平台的LLVM位代码?”来自http://llvm.org/docs/FAQ.html。
为了回答这个问题,llvm没有使用GNU binutils,llvm有自己的binutils来生成代码(称为LLVM核心项目)。反汇编程序和调试器是LLDB项目的一部分。
在LLVM带来一些独立性的地方,它是在语言层面上。你的项目可以用C/C++,Ada,Fortran等编写。llvm提供了在中间表示中转换代码的能力。该IR最终将生成代码。
发布于 2011-03-10 11:22:29
llvm--gcc不支持任意目标。对于任何给定的目标,都必须专门构建llvm-gcc。clang + LLVM可以。我正在尝试使用ellcc:http://ellcc.org来做这件事。我正在使用binutils进行组装和链接。
https://stackoverflow.com/questions/5238582
复制相似问题