LLVM是什么以及我如何使用它进行跨平台编译。

6

我在各处阅读有关LLVM的文章,它可以用于减轻C++跨平台编译的痛苦。我试图阅读文档,但我不明白如何在实际开发问题中使用它。请有人以简单的语言解释一下我该如何使用它?

5个回答

6
LLVM的关键概念是程序的低级“中间”表示形式(IR)。该IR大致处于汇编代码的水平,但包含更多信息以便于优化。
LLVM的强大之处在于它能够将这个中间表示形式的编译推迟到特定目标机器,直到代码需要运行时才进行。可以使用即时编译(JIT)方法来为应用程序生成它需要的代码,就在它需要它之前。
在许多情况下,您在程序运行时拥有比总部更多的信息,因此程序可以被大大优化。
要开始使用,您可以将C++程序编译为单个中间表示形式,然后从该IR编译到多个平台。
您还可以尝试Kaleidoscope演示文稿,它将引导您创建一种新语言,而无需实际编写编译器,只需编写IR即可。
在性能关键的应用程序中,应用程序可以在需要运行之前自己编写所需的代码。

1
你也可以编译二进制文件,不必强制使用运行时JIT方法。它已经有了一些后端,我刚开始使用它,到目前为止它作为ARM交叉编译器很容易使用。将各个模块组合在一起并优化整个程序非常容易。 - old_timer

2

为什么不去LLVM网站查看所有文档呢?他们详细解释了LLVM是什么以及如何使用它。例如,他们有一个入门指南页面。


1

需要注意的是,有关目标的大量信息来自编译时使用的系统头文件。LLVM不会推迟解决诸如“指针大小”或“字节布局”之类的问题,因此,如果您使用64位头文件为小端平台进行编译,则无法使用该LLVM源代码来针对32位大端汇编输出模式。


1

LLVM是一个低级虚拟机,具有代码生成器。如果您想编译到它,可以使用gcc前端或clang,这是LLVM的C/C++编译器,仍在不断改进中。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接