初识LLVM
目录
llvm的官网:https://llvm.org/
下面展示下用Ubuntu20.04来编译llvm9.0.1
源码编译
- 准备编译环境
|
|
- 下载llvm源码
https://github.com/llvm/llvm-project
|
|
- 开始编译
https://llvm.org/docs/GettingStarted.html
|
|
-G Ninja: 表示生成Ninja系统的构建文件,可选的构建系统有Ninja、Unix Makefiles、Visual Studio、Xcode
-DCMAKE_BUILD_TYPE=RELEASE: 表示生成Release版本的LLVM,此值默认是Debug
-DLLVM_TARGETS_TO_BUILD=“X86”: 表示编译的目标平台是X86平台,可选的目标机器有AArch64、AMDGPU、ARM、BPF、Hexagon、Lanai、Mips、MSP430、NVPTX、PowerPC、RISCV、Sparc、SystemZ、WebAssembly、X86、XCore
-DLLVM_ENABLE_PROJECTS=“clang”: 表示我们除了编译LLVM以外,还要编译clang.如果还需要编译其他工具,则在后面添加,并用分号分割.比如,要编译clang和lldb,则需要设置为-DLLVM_ENABLE_PROJECTS=“clang;lldb”
-DLLVM_OPTIMIZED_TABLEGEN=ON: 仅对Debug模式有效,开启此选项可提高编译速度
Clion编译
- 用Clion打开llvm的CMakeLists.txt文件
- 配置Release选项
|
|
- 在上述的debug或者release目录下执行下述命令,即可开始编译.
|
|
常用工具
名称 | 功能 | 输入文件后缀 | 输出文件后缀 | 参数 |
---|---|---|---|---|
clang | C编译器 | .c | .ll | -emit-llvm -S |
clang++ | C++编译器 | .cpp | .ll | -emit-llvm -S |
llvm-as | llvm汇编 | .ll | .bc | |
llvm-dis | llvm反汇编 | .bc | .ll | |
lli | llvm解释器 | .ll | ||
llc | llvm后端编译器 | .ll | .s | |
opt | 优化器 | .bc/.ll | .bc |
|
|