之前听说过ccache可以加快大型工程的编译速度,一直没时间使用,最近看到一篇关于加速Qt编译过程的文章,
就自己动手试了一下,因为Ubuntu版本是14.10 有点老,只能通过源码方式安装,下面只记载了安装过程中出现的问题
因为网上有很多安装教程,这里就不列了。
1. ccache的安装
去https://ccache.samba.org/下载最新的版本:
ccache依赖于asciidoc,ccache在安装时有2个问题:xmllint和xsltproc会提示出错,参考这篇文章解决
https://groups.google.com/forum/#!topic/asciidoc/FC-eOwU8rYg
https://github.com/obgm/libcoap/issues/26
发现是doc/MANUAL.xml的问题,当时这个文件大小是0,没有内容,删除之后,重新make install成功
2. ccache的使用
确定ccache的位置
#which ccache/usr/local/bin/ccache
#cd /usr/local/bin/root@vmw:/usr/local/bin# which gcc
/usr/bin/gcc 此时gcc还是原始的gcc,默认的gcc是在/usr/bin下,
#ln -s ccache /usr/local/bin/gcc
#ln -s ccache /usr/local/bin/g++
#ln -s ccache /usr/local/bin/cc
#ln -s ccache /usr/local/bin/c++
#export PATH="/usr/local/bin/ccache:$PATH"
通过如上命令设置过之后,系统就会使用/usr/local/bin下的gcc了,即包含了ccache封装的版本。原因是:
PATH环境变量中,/usr/local/bin在/usr/bin之前,所以会优先使用此gcc
declare -x PATH="/usr/local/bin/ccache:/opt/tools/docbook-xsl-1.76.0/tools/bin:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin:/opt/kaifaban/i.mx28x/tools/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:/opt/hisi-linux/x86-arm/arm-hisiv400-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:/opt/tools/qt5.5/Tools/QtCreator/bin:/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv100-linux/target/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
#which gcc
/usr/local/bin/gcc 此时的gcc已经是ccache封装的版本
交叉编译Qt时,需要修改qmake.conf中对应的:
QMAKE_CC = ccache arm-hisiv200-linux-gcc
QMAKE_CXX = ccache arm-hisiv200-linux-g++
QMAKE_LINK = ccache arm-hisiv200-linux-g++
QMAKE_LINK_SHLIB = ccache arm-hisiv200-linux-g++
测试时,第一次编译Qt编译时间还是很长,查询编译日志可以发现ccache的身影,
make clean之后再编,奇迹发生了,日志的打印速度变得飞快,编译时间和之前不是一个数量级的。
后面会尝试编译Android。