使用ccache大幅度加速gcc编译速度至少1倍以上(不需要修改任何编译选项)

因为我们整个项目都是使用c++开发的,生成的so足有50M,原来编译一遍要三五分钟,一个针对oracle,一个针对mysql,整个轮回下来这部分就要10来分钟,加上代码上传、翻译,一轮配管打包下来二三十分钟。BOSS有些生气,效率比较低。今天一大早到公司就着手测试。经在本地vmware测试,编译gperftools的速度从2分30秒下降到1分。立刻让项目组安排调整。原来配管只有一个cpu核,经过让升级到4核,加上使用ccache,不需要修改任何编译选项,快的不行。使用如下:

安装ccache

yum install ccache
查看ccache 安装位置

whereis ccache

查看安装路径, /usr/bin/ccache
创建gcc,g++链接

mkdir ~/.bin

cd ~/.bin/

ln -s /usr/bin/ccache gcc

ln -s /usr/bin/ccache g++
设置PATH,更改本地.bash_profile文件,修改gcc,g++链接到ccache

vim ~/.bashrc

添加 export PATH=(HOME/.bin:)PATH
确认是否生效

which g++

如果是$HOME/.bin/g++就成功了;

直接编译项目,飞一样的感觉。
经查,gcc还支持多核编译,还没有测试(因为我们已经超级快了),有兴趣的可以参考https://www.cnblogs.com/jacktu/archive/2010/07/15/1777974.html。

最近配管测试下来,ccache有个问题,就是如果头文件都变了的化,第一次编译的时候就和平常一样了,比较慢,此时还是需要借助gcc的-j8进行多核编译。不过通常来说,大型文件每次变更所有头文件的概率是很小的,变化的只是一小部分,我们也发现了目前每天发布都是一个版本,导致头文件变更存在问题,已经在研究根据模块修改,而不是一撸子全部在一个大版本号中。这也充分说明了逻辑架构如果错了,实现再优秀没有用。就像我们要造一辆每次可以运50人的车,如果设计出来是跑车的架子,怎么地都是很难达到好的目标的。

https://www.cnblogs.com/zhjh256/p/9296737.html
另外好像还有个。

linux编译命令:tmpfs,make,distcc,ccache
https://www.cnblogs.com/forforever/p/13637082.html
tmpfs: 解决IO瓶颈,充分利用本机内存资源
make -j: 充分利用本机计算资源
distcc: 利用多台计算机资源
ccache: 减少重复编译相同代码的时间
这些工具的好处都在于布署的成本相对较低,综合利用这些工具,就可以轻轻松松的节省相当可观的时间。上面介绍的都是这些工具最基本的用法,更多的用法可以参考它们各自的man page。

原文地址:https://www.cnblogs.com/marklove/p/15147702.html