arch linux用户应优先使用pacman安装官方llvm、clang、lld包,因其含完整工具链、默认启用主流后端、调试信息完整,无需自行编译;aur源码构建耗时长、易失败且升级风险高。

直接用pacman装LLVM和Clang最稳
Arch Linux官方仓库的llvm包已包含完整工具链(clang、lld、llc、opt等),且默认启用所有主流后端(X86、AArch64、RISCV等)。不用自己编译,除非你明确需要调试符号、修改源码或启用特殊选项。
执行以下命令即可安装稳定版(通常为最新LTS或次新稳定版):
sudo pacman -S llvm clang lld
注意:llvm包本身不自动依赖clang或lld,必须显式指定;lld是现代链接器,建议一并装上,避免后续链接时 fallback 到ld.bfd。
-
clang提供C/C++/ObjC编译前端,clang++会自动调用libc++(若已装libc++包)或libstdc++ - 如需静态分析工具(
clang-tidy、clang-format),额外装clang-tools-extra(AUR包,非官方仓库) - 调试支持(
llvm-dwarfdump、llvm-objdump)已随llvm主包安装
为什么别急着从AUR编译llvm-project
AUR里有llvm-git或llvm-nightly这类包,但它们在Arch上风险明显高于收益:
- 构建耗时长(单核编译常超1小时),占用10GB+磁盘空间,且极易因
cmake版本或ninja配置不匹配失败 - Arch的
llvm包已启用-DLLVM_ENABLE_ASSERTIONS=ON和-DCMAKE_BUILD_TYPE=RelWithDebInfo,调试信息完整,断言可用 - 上游变更频繁,AUR PKGBUILD可能滞后或未适配最新
llvm-project子模块结构(比如flang拆分后路径变动) - 升级时易与系统其他包(如
mesa、qt6-base)的LLVM依赖冲突,pacman无法自动解决
确认安装是否完整 & 常见路径问题
装完后运行clang --version和llvm-config --version,输出版本号一致即说明核心组件就位。关键路径如下:
- 可执行文件:全部在
/usr/bin/下(clang、llc、llvm-dis等) - 头文件:
/usr/lib/llvm/include/(不是/usr/include/llvm) - 库文件:
/usr/lib/llvm/lib/(含libLLVM.so等),llvm-config --libs会正确指向此处 - 注意:
llvm-config默认不输出--cxxflags里的-I路径,需手动加-I/usr/lib/llvm/include才能编译链接LLVM API的程序
需要自定义构建时,只改CMake选项,别动基础流程
真要从源码构建(例如加-DLLVM_TARGETS_TO_BUILD="X86;RISCV"精简目标),请严格复用Arch官方PKGBUILD逻辑:
- 用
cmake -S llvm -B build ...(不是cmake ../llvm),这是Archllvm包当前构建方式 - 必须设
-DCMAKE_INSTALL_PREFIX=/usr,否则llvm-config查不到库路径 - 禁用
-DLLVM_ENABLE_RTTI=OFF(Arch默认开RTTI),否则C++代码用dyn_cast会崩溃 - 不要删
-DLLVM_ENABLE_PROJECTS="clang;lld"——Clang和LLD是工具链闭环必需项,不是可选插件
实际中,95%的Arch用户不需要碰源码构建;装完官方包后,clang++ -O2 -stdlib=libc++就能跑通绝大多数LLVM IR操作或Clang插件开发需求。











