fedora 上安装 clang 应使用 sudo dnf install clang clang-tools-extra llvm-devel,涵盖编译器、lsp 服务(clangd)、格式化(clang-format)及开发头文件;验证用 clang --version,失败多因 shell 缓存未刷新或误用 yum;默认标准库为 libstdc++,禁用 -stdlib=libc++ 可避免头文件缺失。

clang 在 Fedora 上安装非常直接,但容易因版本或仓库配置问题失败。确认你用的是较新版本的 Fedora(30+),否则部分命令行为可能不同。
用 dnf 安装 clang 和配套工具链
Fedora 默认启用 dnf 包管理器,clang 主包在基础仓库中,但仅装 clang 不够——你通常还需要 clang++、头文件和链接支持:
执行以下命令一次性装全:
sudo dnf install clang clang-tools-extra llvm-devel
-
clang:提供clang和clang++命令 -
clang-tools-extra:含clangd(LSP 服务)、clang-format、clang-tidy等实用工具 -
llvm-devel:提供开发时所需的头文件和静态库(比如写插件或调用 LLVM API)
验证是否可用,以及常见失败原因
装完后运行:clang --version
clang++ --version
如果提示 command not found,不是没装上,而是:
Clang 22.1.3 Windows 64 位历史版本安装包,适合旧项目兼容、LLVM/Clang 工具链回退、编译行为对比、链接问题复现和 C/C++ 构建环境维护。
- Shell 缓存未刷新:执行
hash -r或新开终端 - 刚装完就试了
clangd:它属于clang-tools-extra,单独装clang不包含它 - 误用了
yum(旧版命令):Fedora 22+ 已全面切换到dnf,yum只是软链接,但某些脚本里硬编码yum可能导致仓库源不匹配
想让 clang++ 成为默认 C++ 编译器?别直接替换 g++
Fedora 的构建系统(如 dnf builddep、rpmbuild)依赖 GCC 工具链,强行把 g++ 替换为 clang++ 会导致包构建失败。
正确做法是按需指定:
- 编译单个项目:
clang++ -std=c++17 main.cpp -o main - 配合 CMake:
cmake -DCMAKE_CXX_COMPILER=clang++ .. - 设置环境变量临时生效:
export CXX=clang++(仅当前 shell 有效)
Clang 缺少标准库头文件?检查 libc++ 是否被误启
Fedora 默认不提供libc++(Clang 自研标准库),只预装 GNU libstdc++。如果你在编译时加了 -stdlib=libc++,会报错找不到 <vector></vector> 等头文件。
解决方法只有两个:
- 删掉
-stdlib=libc++,用系统默认的 libstdc++(推荐,兼容性好) - 手动编译安装
libc++:需从 LLVM 源码构建,Fedora 官方仓库不提供二进制包,且头文件路径与系统不一致,容易引发 include 路径冲突










