1. 搭建LLVM开发环境

搭建LLVM开发环境 学习卡片

任务目标

从源码构建LLVM/Clang(版本17.x),完成开发环境配置,并验证llvm-config与opt工具可用。构建产物将用于后续案例中的IR生成与优化实验。

环境依赖

  • 操作系统:Ubuntu 22.04(或等效Linux发行版)
  • 内存:建议≥8GB(链接阶段需约4GB)
  • 磁盘:≥30GB可用空间
  • 基础工具:build-essential、cmake(≥3.20)、ninja-build、python3

构建步骤

以下命令在终端中依次执行,使用Release配置以缩短构建时间并保证opt运行性能:

# 1. 获取源码(LLVM 17.x)
git clone --branch llvmorg-17.0.6 --depth 1 https://github.com/llvm/llvm-project.git
cd llvm-project

# 2. 配置构建(仅构建LLVM与Clang,启用Ninja加速)
cmake -S llvm -B build -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DLLVM_ENABLE_PROJECTS="clang" \
  -DLLVM_TARGETS_TO_BUILD="X86" \
  -DLLVM_INSTALL_UTILS=ON

# 3. 编译(使用全部CPU核心,约需30-60分钟)
ninja -C build

# 4. 安装到/usr/local(可选,若仅当前会话使用可跳过)
sudo ninja -C build install

若跳过安装步骤,后续命令需在llvm-project/build/bin目录下执行,或将该目录加入PATH:

export PATH="$PWD/build/bin:$PATH"

验证方法

执行以下命令,确认输出与预期一致:

# 验证llvm-config版本与路径
llvm-config --version
llvm-config --bindir

# 验证opt可用并查看版本
opt --version

通过条件:

  • llvm-config --version输出17.0.6;
  • llvm-config --bindir输出包含opt的二进制目录路径;
  • opt --version输出包含LLVM version 17.0.6且无报错。

常见问题

  • 内存不足导致链接失败:在cmake配置中添加-DLLVM_PARALLEL_LINK_JOBS=1限制并行链接任务数。
  • cmake版本过低:使用pip3 install cmake --upgrade或从Kitware APT源安装新版cmake。
  • 磁盘空间不足:构建目录约需25GB,源码约2GB,请提前确认可用空间。

完成上述验证后,LLVM开发环境即搭建完毕,可进入后续案例使用opt加载Pass或处理IR文件。