夜雨聆风学习资料网

ARTICLE · 1274035

Rust 编译过程:源码如何经过 HIR、MIR、LL

Rust 编译过程:源码如何经过 HIR、MIR、LL

Rust 编译过程:源码如何经过 HIR、MIR、LL

每天敲下 cargo build --release,等终端安静,二进制文件就出来了。中间到底经历了啥,平时真没空细想。

直到碰上借不出、二进制突然膨胀,或者代码死活优化不掉——这时候只知道“最后交给 LLVM”根本没用。宏在哪一步展开?借用检查器面对的到底是 AST 还是 MIR?

其实整个编译链路分工特别明确。Cargo 只管调度依赖,真正干活的 rustc 分三段:源码先变成 AST,再一路降到 HIR 和 MIR;MIR 接着转成 LLVM IR,最后交给 LLVM 生成机器码,再由链接器拼成完整程序。

说白了,AST 看结构,HIR 查类型,MIR 管借用和安全,LLVM 才负责吐出机器指令。以后碰到编译报错或体积变大,顺着这条线一层层往下查就行。

原文Rust 编译过程:源码如何经过 HIR、MIR、LLVM 变成机器码
浙江,5小时前,

相关学习资料