ccache是一个编译器缓存工具,它通过缓存先前编译的结果来显著加快程序的重新编译速度。当相同的编译操作再次执行时,ccache会直接从缓存中提供结果,而不是重新编译代码。同时支持多种编译器,如gcc、clang等。
Linux安装方法
yum install ccache或apt install ccache
如在gcc编译环境中使用,可执行以下命令使其临时生效,如需永久生效,可配置到环境变量中。
|
1 2 |
export CC="ccache gcc" export CXX="ccache g++" |
默认配置文件路径
|
1 |
~/.ccache/ccache.conf |
在默认配置文件中,仅max_size = 5.0G,这是缓存的最大容量,可结合实际情况调整,如需自行配置可参考ccache -p命令中的参数进行配置。
统计信息和缓存命中状态查看
通过使用ccache -s命令,用于显示统计信息、缓存命令率等,不同版本之间显示可能会存在差异。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
cache directory /root/.ccache 缓存存储的位置 primary config /root/.ccache/ccache.conf 主配置文件位置 secondary config (readonly) /etc/ccache.conf 系统级配置文件(只读) stats updated 统计数据最后更新时间 cache hit (direct) 1688 直接命中次数(完全匹配,无需预处理) cache hit (preprocessed) 68 预处理后命中次数(部分匹配) cache miss 1760 缓存未命中次数 cache hit rate 49.94 % 缓存命中率 called for link 868 被调用来处理链接操作的次数 called for preprocessing 4 被调用来进行预处理的次数 compiler produced stdout 2 编译器产生标准输出的次数 compile failed 2 编译失败的次数 preprocessor error 8 预处理错误的次数 bad compiler arguments 0 错误的编译器参数次数 autoconf compile/link 1198 autoconf测试编译/链接的次数 no input file 52 没有输入文件的次数 cleanups performed 0 执行的缓存清理次数 files in cache 4893 缓存中的文件数量 cache size 86.0 MB 当前缓存占用的空间 max cache size 5.0 GB 缓存的最大允许大小,如果您的磁盘空间充足,可以适当增大 |
ccache 4.7.3版本统计信息显示如下
|
1 2 3 4 5 6 7 8 |
Cacheable calls: 3828 / 5799 (66.01%) 总编译请求5799次,可缓存的调用3828次(占比66.01%) Hits: 1829 / 3828 (47.78%) 缓存命中率1829次(占可缓存调用的 47.78%) Direct: 1149 / 1829 (62.82%) 直接命中率 Preprocessed: 680 / 1829 (37.18%) 预处理命中率 Misses: 1999 / 3828 (52.22%) 缓存未命中1999 次(占可缓存调用的 52.22%) Uncacheable calls: 1971 / 5799 (33.99%) 不可缓存的调用1971 次(占 33.99%) Local storage: Cache size (GB): 0.20 / 5.00 ( 4.06%) 当前缓存空间占用率 |
验证
可通过time时间进行统计,第一次编译的时间,第二次编译的时间,在编译过程可看到ccache gcc就表示ccache已经生效了。
![]()
更多功能参见官方文档:https://ccache.dev/documentation.html
ccache是一个简单却强大的工具,特别适合需要频繁编译的开发环境或持续集成系统。通过合理配置,它可以显著提高工作效率,减少等待编译的时间,让开发者更专注于代码本身而非等待构建完成。
原文链接:通过ccache命令加速编译速度,转载请注明来源!






