> 技术文档 > CentOS 7.9 + GCC9 离线安装 IWYU(Include What You Use)

CentOS 7.9 + GCC9 离线安装 IWYU(Include What You Use)

本教程适用于 离线环境下在 CentOS 7.9 系统中使用 GCC 9 离线安装 IWYU 的完整步骤,涵盖 Clang 11.1.0 编译、IWYU 构建以及头文件自动优化流程。


📥 一、准备安装包

请提前下载以下源码包(可通过在线机器提前下载,再传输到离线环境):

  • LLVM 源码:

    https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/llvm-11.1.0.src.tar.xz
  • Clang 源码:

    https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/clang-11.1.0.src.tar.xz
  • IWYU 源码:

    git clone -b clang_11 https://github.com/include-what-you-use/include-what-you-use.git

🧱 二、编译 Clang 11.1.0

# 解压源码tar xf llvm-11.1.0.src.tar.xztar xf clang-11.1.0.src.tar.xz# 重命名 clang 并移动到 LLVM 源码目录下mv clang-11.1.0.src llvm-11.1.0.src/tools/clang# 创建构建目录并进入mkdir llvm-build && cd llvm-build# 生成 Makefilecmake -G \"Unix Makefiles\" \\ -DCMAKE_BUILD_TYPE=Release \\ -DLLVM_ENABLE_PROJECTS=clang \\ -DCMAKE_C_COMPILER=gcc \\ -DCMAKE_CXX_COMPILER=g++ \\ -DCMAKE_INSTALL_PREFIX=/opt/iwyu \\ ../llvm-11.1.0.src# 编译并安装make -j12make install

🧩 三、编译 IWYU

cd /path/to/include-what-you-usemkdir build && cd buildcmake \\ -DCMAKE_PREFIX_PATH=/opt/iwyu \\ -DCMAKE_BUILD_TYPE=Release \\ -DCMAKE_INSTALL_PREFIX=/opt/iwyu \\ ..make -j12make install

⚙️ 四、在 CMake 项目中启用 IWYU

在你的 CMakeLists.txt 中添加如下配置:

set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE /opt/iwyu/bin/include-what-you-use)# 静态库需要额外添加set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

📊 五、执行头文件分析

python3 /path/to/include-what-you-use/iwyu_tool.py -p ./build > iwyu.out

参数说明:

  • -p ./build:指定包含 compile_commands.json 的目录(通常是构建目录)

  • > iwyu.out:将分析结果输出到文件中,便于后续处理


🔧 六、自动优化头文件

使用 IWYU 提供的 fix_includes.py 自动修复头文件:

python3 /path/to/include-what-you-use/fix_includes.py < iwyu.out

脚本功能:

  • ✅ 删除无用的 #include

  • ✅ 添加遗漏的 #include

  • ✅ 替换为更合适的头文件(如将 \"my_string.h\" 替换为


✅ 七、安装完成后结构检查

最终 /opt/iwyu 应包含:

/opt/iwyu/├── bin/│ └── include-what-you-use├── include/├── lib/└── ...

如有需要,可将 /opt/iwyu/bin 添加到环境变量中,便于全局使用:

export PATH=/opt/iwyu/bin:$PATH

如需继续进行 IWYU 的静态分析优化工作,也可以配合 Bear 工具生成 compile_commands.json,提高分析准确性。


如果你需要支持自动生成头文件优化建议和分析报告,也可集成到 CI 脚本中,提升整个项目代码质量和可维护性。

需要帮助集成脚本或遇到特定错误,也欢迎继续提问。