如何将Rust编译为机器代码?

时间:2017-04-13 06:34:38

标签: rust

我最近一直在关注Rust programming language。它是如何工作的? Rust代码似乎被编译成ELF或PE(等)二进制文件,但我无法找到有关如何完成的任何信息?它被编译成中间格式,然后用gxx编译其余部分吗?任何帮助(或链接)都会非常感激。

1 个答案:

答案 0 :(得分:39)

Rust编译器的代码生成阶段主要由LLVM 完成。 LLVM是一组用于构建编译器的工具,最常用于C [++]编译器clang[++]

首先,Rust编译器(例如,就像clang)执行所有Rust特定的东西,如类型和借用检查;最后,它生成LLVM-IR。 IR代表中间表示,它可以与汇编相媲美,但更高级别,更重要的是:平台无关。然后Rust编译器只调用☏LLVM并说:

  

嘿伙计,请问这个IR并为当前平台生成机器代码?那太棒了◕◡◕

LLVM响应:

  

当然,没问题,新朋友。以下是[例如] x86_64的高度优化的机器代码! ♫♪♫

之后,他们邀请了更多的朋友将其全部包装在一个漂亮的小[例如] ELF包中,并将其精美地放在用户文件系统中。 (and the user is like...)

这样的信息可以在the official FAQ中找到,其中包含许多有趣的信息。有关Rust编译器的更多详细信息,请阅读the "Rustc Guide"。对于这个问题,章节"High Level Overview"非常有趣。