我可以使用LLVM(低级虚拟机)为哪个平台编译二进制文件?

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的文章.

old*_*mer 8

用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会让你进入平台相关的汇编程序.


Grz*_*cki 5

就目标机器而言,LLVM有许多可能的应用.


Ze *_*lob 1

我只是在这里回答编辑的问题(提出一个新问题可能更合适)。

是 LLVM 的一个很好的架构概述。此页面还包含大量有关 LLVM 各个方面的文档。

简而言之,LLVM 是传统编译器的优化器和后端。它在字节码上运行,字节码本质上是代码的中间表示,用于优化和生成最终的二进制文件。LLVM 前端是独立的,并使用自己的内部 AST 来最终生成字节码。

当您想要生成最终的二进制文件时,LLVM 实际上非常灵活。您可以立即执行此操作,也可以延迟执行直到程序安装完成。我相信您甚至可以在执行期间使用其 JIT 生成最终的二进制文件(对此不能 100% 确定)。像这样延迟的主要优点是它可以应用特定于其执行环境的优化。