apo*_*tis 6 c++ llvm clang targets
我对使用LLVM的Clang编译器感兴趣.LLVM声称是跨平台的,但不清楚哪些平台可以作为目标.我已经做了很多关于这个的谷歌搜索,但似乎没有关于LLVM支持的平台的太多信息.我唯一能找到的就是"这个",这有点令人困惑.我不确定这是否意味着我可以使用LLVM为这些平台编译二进制文件,或者它是否只在这些平台(或两者)上运行.有更多关于LLVM/Clang编译器的人能告诉我哪些平台可以使用Clang或任何其他LLVM前端?我想要特定的信息(例如"它支持Windows 32位,Windows 64位,Linux 32位,Linux 64位等).谢谢!
编辑:
好吧,我想我对LLVM究竟是什么感到困惑.从我刚刚想到的结果来看,LLVM只是一个字节码解释器.由于LLVM被解释为与可执行二进制文件相比,LLVM二进制文件的速度有多慢?那么如果性能很重要LLVM不是正确的选择吗? "在这里"我找到了它支持的架构,但没有说明它支持的操作系统.如果我避免使用与平台相关的代码,它是否可以在所有操作系 如果我能找到任何文章,我会更详细地查找解释LLVM的文章.
用llvm安装类型
llc -version
Run Code Online (Sandbox Code Playgroud)
你会看到类似的东西
Registered Targets:
alpha - Alpha [experimental]
arm - ARM
bfin - Analog Devices Blackfin [experimental]
c - C backend
cellspu - STI CBEA Cell SPU [experimental]
cpp - C++ backend
mblaze - MBlaze
mips - Mips
mipsel - Mipsel
msp430 - MSP430 [experimental]
ppc32 - PowerPC 32
ppc64 - PowerPC 64
ptx32 - PTX (32-bit) [Experimental]
ptx64 - PTX (64-bit) [Experimental]
sparc - Sparc
sparcv9 - Sparc V9
systemz - SystemZ
thumb - Thumb
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
xcore - XCore
Run Code Online (Sandbox Code Playgroud)
转到github.com并搜索mbed_samples以查看用于ARM交叉编译的llvm和clang.blinker03或04周围的地方就是它所在的地方.LLVM对任何平台都有相同的工作方式,你选择目标的步骤,编译合并,优化等都是独立于平台的(你可以使用-m32)选择int size)然后llc会让你进入平台相关的汇编程序.
就目标机器而言,LLVM有许多可能的应用.
我只是在这里回答编辑的问题(提出一个新问题可能更合适)。
这是 LLVM 的一个很好的架构概述。此页面还包含大量有关 LLVM 各个方面的文档。
简而言之,LLVM 是传统编译器的优化器和后端。它在字节码上运行,字节码本质上是代码的中间表示,用于优化和生成最终的二进制文件。LLVM 前端是独立的,并使用自己的内部 AST 来最终生成字节码。
当您想要生成最终的二进制文件时,LLVM 实际上非常灵活。您可以立即执行此操作,也可以延迟执行直到程序安装完成。我相信您甚至可以在执行期间使用其 JIT 生成最终的二进制文件(对此不能 100% 确定)。像这样延迟的主要优点是它可以应用特定于其执行环境的优化。