LLVM它是什么以及如何使用它来跨平台编译

时间:2009-05-12 09:47:59

标签: c++ cross-platform llvm

我正在这里和那里读到关于llvm,可以用来缓解c ++中跨平台编译的痛苦,我试图阅读文档,但我不明白我怎么能 在现实生活中使用它开发问题有人可以用简单的词语解释我如何使用它?

5 个答案:

答案 0 :(得分:6)

LLVM的关键概念是程序的低级“中间”表示(IR)。 此IR大约是汇编程序代码的级别,但它包含更多信息以便于优化。

LLVM的强大之处在于它能够将此中间表示的编译推迟到特定目标机器,直到代码需要运行之前。实时(JIT)编译方法可用于应用程序,以便在需要之前生成所需的代码。

在许多情况下,您在总部运行的程序运行时有更多信息,因此可以对程序进行大量优化。

首先,您可以将C ++程序编译为单个中间表示,然后将其编译到该IR的多个平台。

您还可以尝试Kaleidoscope演示,它将引导您创建一种新语言而无需实际编写编译器,只需编写IR。

在性能关键型应用程序中,应用程序基本上可以编写自己需要运行的代码,就在它需要运行它之前。

答案 1 :(得分:2)

为什么不去LLVM网站查看那里的所有文档。他们非常详细地解释了LLVM是什么以及如何使用它。例如,他们有一个Getting Started页。

答案 2 :(得分:1)

LLVM就像它的名字所说的那样是一个具有代码生成器的低级虚拟机。如果要编译它,可以使用gcc前端或 clang ,它是用于LLVM的c / c ++编译器,它仍在进行中。

答案 3 :(得分:1)

重要的是要注意,有关目标的大量信息来自编译时使用的系统头文件。 LLVM不会推迟解析诸如“指针大小”或“字节布局”之类的内容,因此如果使用64位头为小端平台编译,则不能使用该LLVM源代码来定位32位大端程序集输出。

答案 4 :(得分:1)

书中有一个很好的章节,可以很好地解释一切:www.aosabook.org/en/llvm.html