Ubuntu安装配置ccache

news/2025/2/26 21:39:43/文章来源:https://www.cnblogs.com/smartljy/p/18739760

Ubuntu安装配置ccache

内容

在 Ubuntu 中通过 ccache 加速编译流程的完整指南如下:


1. 安装 ccache

sudo apt update && sudo apt install ccache

2. 配置环境变量(推荐方式)

(1) 临时生效(仅当前终端会话)

export PATH="/usr/lib/ccache:$PATH"

(2) 永久生效(写入 Shell 配置文件)

echo 'export PATH="/usr/lib/ccache:$PATH"' >> ~/.bashrc  # Bash 用户
source ~/.bashrc

(3) 验证路径优先级

which gcc
# 输出应为: /usr/lib/ccache/gcc

3. 配置 ccache 参数

(1) 调整缓存大小(默认 5G)

ccache --max-size=10G  # 设置为 10GB

(2) 查看配置状态

ccache -s  # 显示命中率、缓存大小等信息

4. 在编译流程中启用 ccache

(1) 直接调用(适用于 Makefile)

make CC="ccache gcc" CXX="ccache g++"

(2) 自动适配(CMake 项目)

mkdir build && cd build
cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccake ..
make -j$(nproc)

(3) Autotools 项目(如 ./configure)

./configure CC="ccache gcc" CXX="ccache g++"
make -j$(nproc)

5. 验证加速效果

  • 首次编译:正常耗时,生成缓存
  • 二次编译:速度显著提升(若代码无改动,命中率接近 100%)
ccache -s  # 查看缓存命中率统计

6. 高级配置

(1) 共享缓存(多用户/多项目)

# 所有用户共享缓存目录
sudo mkdir /shared_ccache
sudo chmod 0777 /shared_ccache
ccache --set-config=cache_dir=/shared_ccache

(2) 缓存清理

ccache -C  # 清空缓存
ccache -c  # 清理过期文件

(3) 实时监控

watch -n1 ccache -s  # 每秒刷新缓存状态

7. 常见问题处理

问题 解决方案
缓存未命中 检查 CCACHE_CPP2=yes 是否设置(部分项目需启用)
编译速度无改善 确认 ccache -s 显示缓存路径和命中率正常
磁盘空间不足 调整 --max-size 或清理旧缓存

总结

通过上述步骤,ccache 可将重复编译任务的速度提升 5-10 倍,尤其适合以下场景:

  • 频繁执行 make clean && make
  • 切换 Git 分支后的增量编译
  • 多开发者共享同一缓存目录

建议将 ccache 配置写入 CI/CD 流程,进一步优化团队协作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890376.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#/.NET/.NET Core技术前沿周刊 | 第 27 期(2025年2.17-2.23)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

Jenkins详解教程

1.介绍2.Jenkins CI/CD 流程3.部署Jenkins查看初始密码4 使用Jenkins

Redis概述安装与基本数据类型

Redis概述安装与基本数据类型 1. 什么是NoSQL NoSQL( Not Only SQL ),意即不仅仅是SQL, 泛指非关系型的数据库。Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。 2. NoSQL的广泛应用 随着大数据的兴起,数据量的暴增,数据类型的丰富,传统的关系数据库在应付动…

Hello! I am Zhan Yijue,nice to meet you

这个作业属于哪个课程 23软件工程这个作业要求在哪里 【作业1】自我介绍+软工5问这个作业的目标 学习使用 Markdown, 熟练掌握 GitHub 及 Git 的使用方法, 建立个人博客个人介绍 ❤️ 兴趣爱好听歌 🎧 书法📝 看书,尤其是科幻小说 📊 二次元爱好者 🎩📖 学习经历广东…

Hugging Face 发布 Python WebRTC 库:构建实时音视频应用;微软 Magma:多模态跨数字物理世界丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

1Panel 专业版评测:全面超越宝塔的运维面板新标杆

一、 UX体验与移动端适配:更直观的跨平台交互 1Panel 专业版在用户体验上实现了对宝塔的全面超越。其界面采用现代化设计语言,以黑金主题 为代表的可定制化主题系统支持一键切换,视觉风格更符合技术审美,同时保持功能模块的清晰布局。相较于宝塔复杂的多级菜单,1Panel 的 …

基于抖音agent平台Cozi打造Agent智能体

AI Agent 一、AI Agent(智能体)与开发平台 【1】AI Agent的概念 AI Agent直接翻译更准确,AI代理人。AI Agent是指可以自主执行任务或目标的系统,它可以是一个软件,也可以是一个智能机器,这些系统通过感知环境并在此基础上做出决策。AI Agent可以集成多种技术,包括AI大模…

纯离线部署本地知识库LLM大模型

纯离线部署本地知识库LLM大模型 一、下载离线大模型下载的网址:https://hf-mirror.com/deepseek qwen 相关的模型,只建议使用1.5B的,GGUF后缀的模型 推荐下载llama相关模型,同样是GGUF后缀的,自己笔记本电脑推荐下载8B的 二、下载大模型管理平台 LM Studio下载网址:https…

mailto链接

本文主要内容转载自Haorooms!好用的mailto网站话不多说直接上正菜! 大佬dawsbot提供的工具mailto.vercel.app前言 今天看到老外写的一篇关于mailto: HTML e-mail 的文章,感觉很新奇,以前从来没有这么用过,用email的时候,最多用过mailto,但是其中穿链接参数,还是第一次看…

二次开发(第一周作业)

(1) 来源 C++ 大作业 超市收银系统 - shugen - 博客园 该文章介绍了一个软件的实现过程,并提供了相关代码。通过对该软件的分析对其进行了改进和二次开发。 (2) 运行环境+运行结果的截图(伸缩代码附上) 操作系统:Windows 11 开发工具:Dev-c++ 编程语言:C++ 运行结果截…

iconfont本地引入

本地引入iconfont的好处 Butterfly主题自带的Font Awesome图标库免费版里有好多图标没有,而阿里巴巴的开源图标iconfont里的图标非常丰富,所以可以同时引入一下iconfont图标作为Font Awesome图标库的补充。 考虑到在线引入的icon图标大小都是16x16的,而Font Awesome图标一般…