背景
LLVM(Low Level Virtual Machine)是一个用于构建编译器的开源框架和工具链。它不仅提供了一个高度优化的中间表示(IR),还支持广泛的优化技术和后端代码生成。主要由三个部分组成。
- 前端:将高级语言例如C或者其他语言转换成LLVM定义的中间表达方式 LLVM IR。例如非常有名的
clang
, 就是一个转换C/C++的前端。 - 中端:中端主要是对LLVM IR本身进行一下优化,输入是LLVM, 输出还是LLVM, 主要是消除无用代码等工作,一般来讲这个部分是不需要动的,可以不管他。
- 后端:后端输入是LLVM IR, 输出是我们的机器码。我们通常说的编译器应该主要是指这个部分。大部分优化都从这个地方实现。
环境配置
# 解压源码
sudo tar xvf llvm-project-17.0.6.src.tar.xz # 新建安装目录
sudo mkdir -p /usr/local/llvm
# 新建编译目录
sudo mkdir -p llvm-project-17.0.6.src/build
# 进入编译目录
cd llvm-project-