用ccache加速你的gcc/g++编译(转)

用ccache加速你的gcc/g++编译(转)[@more@]

  这儿有一个奇妙的gcc工具,叫做ccache。你可以在这儿访问它的主页http://ccache.samba.org。

  如果你经常一遍一遍地编译相同的程序——比如,尝试不同的kernel补丁,或者测试你自己开发的程序——那么,对你来说,ccache就太完美了。它将在第一遍编译时多花几秒钟,但接下来就会快得多得多。很明显,它不是适合每个人的。

  不管怎样,Arch软件包的Extra库中也有ccache了。

  pacman -S ccache

  现在,加速编译C代码,使用"ccache gcc"或"ccache g++"代替"gcc"或"g++" 你也可以配置makepkg使用ccache,只需在你的/etc/makepkg.conf中加入下面几行:

  export CC="ccache gcc"

  export CPP="ccache cpp"

  export CXX="ccache g++"

  享受快速编译的乐趣吧!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-940358/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-940358/

<think>好的,用户想解决缺少ccache导致需要重新编译所有源文件的问题,询问如何安装和配置ccache。我需要根据提供的引用资料整理步骤,同时确保回答结构清晰。 首先,安装ccache。引用[3]提到可以通过sudo apt-get install ccache安装,适用于Debian/Ubuntu系统。其他系统可能需要不同的包管理器或者源码安装,比如引用[1]提到从Samba小组下载源码,但用户可能更倾向于使用包管理器,所以先写主流的安装方法。 接下来是配置部分。引用[2]说明ccache通过替换编译器命令来拦截编译任务,所以需要让ccache伪装成编译器。引用[3]中的方法是用符号链接替换gcc等工具,放置在用户目录下的~/.ccache_bin,然后添加路径到PATH环境变量前面。这样编译时会优先使用ccache包装过的编译器。 另外,可能需要配置缓存大小和路径。默认缓存可能较小,用户可以通过ccache --set-config=max_size=5G来调整。同时,确保.bashrc或.zshrc中添加PATH的设置,使得终端会话中生效。 验证部分,用户可以使用ccache -s查看统计信息,或者在编译时加上time命令比较时间差异,如引用[3]中的测试结果。还要注意,某些构建系统可能需要显式指定使用ccache,比如CMake中的设置,但用户的问题可能不需要这么复杂,先保持简单。 最后生成相关问题,涵盖性能优化、缓存管理、与分布式编译的区别以及常见问题,这样用户如果有进一步疑问可以自行参考。</think>### 如何安装和配置ccache避免重复编译 #### **1. 安装ccache** - **Debian/Ubuntu系统** 直接通过包管理器安装: ```bash sudo apt-get install ccache ``` - **其他系统** 可通过源码编译安装,需从[Samba小组或镜像下载源码](https://ccache.dev/download.html)[^1],解压后执行: ```bash ./configure && make && sudo make install ``` #### **2. 配置ccache** ccache通过替换编译器命令(如`gcc`/`clang`)实现缓存功能。以下是两种常用配置方式: ##### **方法一:符号链接替换** 1. 创建ccache包装目录并建立符号链接: ```bash mkdir ~/.ccache_bin cd ~/.ccache_bin ln -s /usr/bin/ccache gcc ln -s /usr/bin/ccache g++ ln -s /usr/bin/ccache cc ln -s /usr/bin/ccache c++ ``` 2. 将包装目录添加到`PATH`环境变量最前面: ```bash echo 'export PATH="$HOME/.ccache_bin:$PATH"' >> ~/.bashrc # 或 ~/.zshrc source ~/.bashrc ``` ##### **方法二:直接调用ccache** 在编译命令前显式添加`ccache`: ```bash CCACHE_PREFIX="ccache" make -j8 ``` #### **3. 验证配置** - 检查ccache是否生效: ```bash ccache -s # 查看缓存命中率统计 ``` - 编译时观察输出,若出现`ccache hit`表示缓存生效。 #### **4. 优化缓存设置** - **调整缓存大小**(默认5GB): ```bash ccache --set-config=max_size=10G # 设置为10GB ``` - **缓存路径管理**: ```bash ccache --set-config=cache_dir=/path/to/custom_cache # 自定义存储位置 ``` #### **5. 集成到构建系统** - **CMake项目**: 在CMakeLists.txt中添加: ```cmake find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() ``` --- ### **效果说明** - **首次编译**:与普通编译耗时相同,但会生成缓存。 - **后续编译**:未修改的源文件直接从缓存读取,编译时间减少50%-90%[^3]。 - **典型场景**:执行`make clean`后重新编译,仅需编译修改过的文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值