参考了官方教程:Getting Started with the LLVM System — LLVM 19.0.0git documentation
首先从github拷贝一份源码,使用了官方推荐的方法:
git clone --depth 1 https://github.com/llvm/llvm-project.git
我的系统是ubuntu22,安装过程中需要使用到cmake、make、gcc、g++等工具,提前安装一下
sudo apt update
sudo apt upgrade
sudo apt install cmake make gcc g++
具体需要安装哪些工具,可以更具cmake时的提示,按需安装。
起初使用了官方推荐的ninja进行安装,结果在链接的时候机器接近卡死,且出现了错误,可能是我的机器太老了。
对ninja也不熟悉,果断换成Makefile安装
cmake -S llvm -B build -G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=Debug \
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;mlir"
cmake用到的几个参数说明如下:
-S 源代码路径
-B 编译路径
-G 目标工程类型,可选的有make、ninja、VS、XCode等,注意使用makefile得设置Unix Makefiles
-DCMAKE_BUILD_TYPE 设置Dbug/Release,对于编译器开发,选择Debug,方便调试编译器
-DLLVM_ENABLE_PROJECTS 设置llvm附带的子工程,比如clang、lld、mlir等,也就是说,默认只会编译llvm核心,如果要用到其他组件,需要在这边设置
然后到build目录下面执行make,我的电脑只有8个CPU 核,为了避免死机,我之用6个线程
cd build/
make -j6
结果还是报错,估计是内存不足,换成单线程
make -j1
看了一下16GB内存基本,主要是在link的时候,Ninja导致死机,估计也是内存不足导致。
单线晃晃悠悠,终于编译成功。生成物位于build目录,可执行文件在build/bin/目录,lib库文件在build/lib目录,头文件在build/includ目录
总结一下,下载编译步骤比较常规明了,需要注意的是内存大小和硬盘空间。
如果要编译带调试信息的clang,推荐内存是32GB,内存不足可以使用swap空间不足。
硬盘空间需求量也很大,以编译Debug版本llvm、clang、clang-tools-extra、lld、mlir为例,build目录大小大约200GB,磁盘空间使用量还是很大的,编译之前需要准备足够的磁盘空间。