•
一次 LLVM 的编译记录
By Looning • 3 minutes read •
简述
一次简单的 llvm 源码编译记录。
下载源码
根据 llvm 官网的指引。使用 git 进行源码下载,使用命令如下:
编译源码
目前官方推荐使用 CMake 来编译 LLVM,不再推荐使用 config 文件,所以选项需要在使用 CMake 时指定出来,本次编译使用的相关配置如下:
&&
我使用ninja
来编译系统,而不是使用make
来构造,如需使用make
,可以改为 "GNU make"
。以下为其余详细参数解释:
-DCMAKE_BUILD_TYPE=Release
设置为 Release 模式,编译优化开启,适合生产环境使用(体积小、速度快)。-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;mlir;polly"
指定要编译的 LLVM 子项目,包括:- clang: C/C++/Objective-C 编译器前端
- clang-tools-extra: Clang 相关工具(如 clangd、clang-tidy、clang-format 等)
- mlir: 多级中间表示(MLIR)框架
- polly: 多面体优化器
-DLLVM_TARGETS_TO_BUILD="X86"
只编译 X86(x64)目标平台的后端,减少编译时间和体积。如果只在 x86_64 机器上用,推荐这样设置。-DLLVM_ENABLE_RTTI=ON
启用 RTTI(运行时类型识别),某些项目(如 TVM)需要开启,否则链接会报错。-DLLVM_BUILD_LLVM_DYLIB=OFF
不生成 LLVM 的动态库(libLLVM.so),只生成静态库(libLLVM.a)。-DBUILD_SHARED_LIBS=OFF
不将所有库都编译为动态库(.so),而是编译为静态库(.a)。配合上面参数,所有 LLVM 组件都以静态库形式生成。-DLLVM_ENABLE_LLD=ON
使用 lld 作为链接器,加快链接速度。-DCMAKE_INSTALL_PREFIX=/your/llvm/install/path
指定安装路径。ninja install 后,所有工具、库、头文件会被安装到这个目录下。
设置完成后,使用如下命令开始编译:
建议n
不要设置得太高,llvm 编译比较吃内存,很容易把系统内存吃爆。
运行测试检查安装
运行 LLVM 测试
这会运行 LLVM 核心库的测试,检查基本功能是否正常。
运行 Clang 测试
检查 Clang 编译器是否正常工作。
运行 MLIR 测试
检查 MLIR 功能是否正常。
运行 Polly 测试
检查 Polly 多面体优化器是否正常。
安装
因为前面已经使用CMake
配置好了安装路径,接下来直接安装即可:
验证安装
如果输出正常,则安装完成,后续就可以在安装目录下使用 llvm 相关组件啦。
ceshi