•
一次 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