必须先确认 Debian 版本(如 lsb_release -sc),再选择匹配的 APT 源,否则 apt update 会因源地址不兼容导致 404 Not Found 或签名验证失败。

确认 Debian 版本再选源,否则 apt update 会失败
Debian 的 APT 源地址和可用 LLVM 版本强绑定。比如 bookworm(12)能用 llvm-toolchain-bookworm-18,而 bullseye(11)只能用 llvm-toolchain-bullseye-14。直接硬套 Ubuntu 的源(如 focal 或 jammy)会导致 404 Not Found 或签名验证失败。
查当前版本:lsb_release -sc 或 cat /etc/os-release | grep VERSION_CODENAME。然后去 https://www.php.cn/link/f5ea287e37175b40f6567eb0cf6878c7 找对应 codename 的源行——页面顶部有下拉菜单,选对系统和版本后,它会直接生成可复制的 deb 行。
- 别手动拼写源地址,大小写、斜杠、末尾
main缺一不可 - 如果系统是 Debian testing/unstable,优先用
unstable源,但注意包可能含实验性变更 - 国内用户若卡在
apt update,换清华或中科大镜像源(https://mirrors.tuna.tsinghua.edu.cn/llvm/)比改 llvm.org 源更可靠
添加 GPG 密钥必须在 apt update 前完成
LLVM 官方 APT 仓库要求签名验证,缺密钥会导致 apt update 报 NO_PUBKEY 错误,且后续 apt install 全部拒绝执行。
正确顺序只有一条路径:wget -O - https://www.php.cn/link/f5ea287e37175b40f6567eb0cf6878c7llvm-snapshot.gpg.key | sudo apt-key add -
(注意:Debian 12+ 已弃用 apt-key,但 LLVM 官方仍只提供此方式;若提示 deprecated,仍可执行,不影响功能)
- 执行后应输出
OK,没输出或报错说明密钥未装上 - 别跳过这步去试
apt install——它不会提示缺密钥,只会静默失败或报依赖错误 - 密钥只需加一次,重装系统或换源才需重加
apt install 时明确指定版本号,避免装错 clang/llvm 主版本
Debian 默认仓库里的 clang 和 llvm 往往是旧版(如 bookworm 默认是 14),而 LLVM 官方源提供 15/16/17/18 等。不带版本号直接 apt install clang,很可能装到系统自带的老版本,而非你刚加的源里的新版。
装 LLVM 18 示例(适配 bookworm):sudo apt install clang-18 lldb-18 llvm-18 llvm-18-dev libclang-18-dev
- 版本号必须和源名一致:源是
llvm-toolchain-bookworm-18,就装-18后缀的包 -
libclang-18-dev是头文件和静态库,做 Clang 插件或绑定开发必需;漏掉会导致#include <clang-c/Index.h>编译失败 - 装完后检查:
clang-18 --version和llvm-config-18 --version应输出 18.x
PATH 不自动更新,clang 命令默认不可用
APT 安装的带版本号的二进制(如 clang-18)放在 /usr/bin/,但不创建无后缀的 clang 符号链接。直接敲 clang --version 会提示 command not found,这不是安装失败,是路径没设。
两种解法:
① 临时用:alias clang=clang-18(仅当前终端有效)
② 永久生效(推荐):echo 'export PATH="/usr/lib/llvm-18/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
-
/usr/lib/llvm-18/bin是 LLVM 18 工具链主目录,含opt、llc、llvm-dis等关键工具 - 别写成
/usr/bin——那里只有带版本号的二进制,没工具链全家桶 - 如果用了 zsh,改
~/.zshrc而非~/.bashrc
实际用起来最常卡住的点就三个:源和系统版本不匹配、GPG 密钥漏加、PATH 没指向 /usr/lib/llvm-X/bin。其他都是顺带的事。

















