Windows 安装与配置 ccache ——编译加速实用教程

https://github.com/ccache/ccache/releases/tag/v4.12 版本 4.12 ·ccache/ccache



一、ccache 介绍

ccache(Compiler Cache)是一个编译结果缓存工具,可以大幅减少重复编译的耗时。在深度学习框架(如 PaddlePaddle、PyTorch、TensorFlow)从源码构建或二次编译扩展时,ccache 能显著缩短构建时间。

原理:ccache 会缓存编译结果,当源文件和编译参数未变化时,直接复用缓存,而不是重新编译。



二、下载 ccache for Windows

  1. 访问 GitHub 官方发布页:
    https://github.com/ccache/ccache/releases

  2. 选择最新版本的 Windows 预编译包,例如:
    ccache-4.12-windows-x86_64.zip

  3. 下载后解压到固定路径,推荐简洁目录,例如:

D:\Tools\ccache\
├── ccache.exe
├── ...



三、配置环境变量

  1. 打开系统环境变量设置:

    • 右键 此电脑 → 属性 → 高级系统设置

    • 点击 环境变量

  2. 添加 ccache 路径到 PATH:

    • 在“系统变量”中找到 Path

    • 点击“编辑”,添加:

      D:\Tools\ccache\
      
  3. 保存并关闭。

  4. 打开新的命令行窗口,验证是否生效:

ccache --version

如果能正确显示版本号,则说明配置成功。



四、配置编译器代理

ccache 通过代理 gcc/clang/nvcc 等编译器来实现缓存。常见做法有两种:

方案 1:创建同名软链接(推荐)

将 ccache 链接为 gcc、g++、clang 等工具,让编译系统无感知启用缓存。

在 PowerShell 执行:

cd D:\Tools\ccache\
New-Item -ItemType SymbolicLink -Name "gcc.exe" -Target "ccache.exe"
New-Item -ItemType SymbolicLink -Name "g++.exe" -Target "ccache.exe"

如果用 MSVC 构建,可同样创建 cl.exe 链接。

方案 2:设置环境变量(不改动文件)

可以直接设置编译器替换变量:

set CC=ccache gcc
set CXX=ccache g++

注意:此方式仅在当前命令行会话有效,关闭后失效。适合临时构建。



五、配置缓存目录与大小(可选)

ccache 默认缓存存放在用户目录,可以改到更快的磁盘(如 NVMe):

ccache --set-config=cache_dir=D:\ccache_cache
ccache --set-config=max_size=10G

查看当前配置:

ccache --show-config

查看统计信息:

ccache -s


六、验证加速效果

  1. 编译任意 C/C++ 项目两次:
    第一次编译会花费正常时间,第二次应明显加速。

  2. 通过统计命中率确认缓存是否生效:

ccache -s

输出示例:

cache hit (direct)                 80
cache hit (preprocessed)           12
cache miss                         20

命中率越高,加速效果越好。



七、在 AI 框架源码编译中的应用

以 PaddlePaddle 为例:

set CC=ccache gcc
set CXX=ccache g++
python setup.py build

编译完成后,再次运行上述命令会发现构建显著提速。



八、维护与清理

定期清理缓存,释放磁盘空间:

ccache -C   # 清空缓存
ccache -z   # 重置统计信息

这一教程覆盖了:

下载与安装
环境变量配置
编译器集成
缓存路径和大小优化
统计和验证命中率
在深度学习框架编译中的实战应用



 ccache 工作原理流程图

标题

图解说明

  • A → B:ccache 拦截编译请求

  • 命中缓存:直接返回编译产物,跳过编译步骤

  • 未命中缓存:调用真实编译器进行编译,再将结果写入缓存,供下次复用

  • 最终输出交回构建系统继续链接或打包



Windows 环境变量 + 符号链接配置示意图

图解说明

  • PATH 搜索顺序:Windows 会按顺序查找可执行文件,先找到 D:\Tools\ccache\gcc.exe,实际上是指向 ccache.exe 的符号链接。

  • ccache.exe:拦截编译命令,先检查缓存是否可用。

  • 命中缓存:直接返回已编译目标文件,跳过真实编译。

  • 未命中缓存:调用真实编译器(如 MinGW 的 gcc.exe),完成编译并将结果写入缓存。

这样用户就能形象理解:通过调整 PATH 和创建符号链接,ccache 成为编译器的“透明代理”,整个构建系统无需修改即可获得加速效果

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐