CCACHE提高编译速度的具体使用

ccache(“compiler cache”的缩写)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通常使用cpp解析这些信息所需要的时间。如果某头文件中包含对其他头文件的引用,ccache会用那个文件的 cpp-parsed版本来取代include声明。
ccache只是将最终的文本拷贝到文件中,使得它可以立即被编译,而不是真正去读取、理解并解释其内容。
ccache是以空间换取速度,ccache非常适合经常make clean(或删除out目录)后重新编译的情况。
ccache是经过严格编写的。能确保至少在编译结果的正确性上和直接使用make所得到的结果完全一致。甚至不同工程使用的ccache也能保证其正确性。

配置方法如下:
1、 安装ccache

sudo apt-get install ccache

2、在~/.bashrc中添加(或者/etc/profile文件中):

#ccache
export USE_CCACHE=1
export CCACHE_SLOPPINESS=file_macro,include_file_mtime,time_macros
export CCACHE_UMASK=002

然后执行以下命令使之在新的终端里生效

source .bashrc

默认情况下cache(缓存)会保存在~/.ccache目录下,如果主目录位于NFS或其他非本地文件系统上, 设置cache目录位置:

//home/XXXXXX/.ccache   XXXXXX是你的用户名
export CCACHE_DIR=<path-to-your-cache-directory>

注:配置.bashrc后注意source改文件,否则cache(缓存)会保存在~/.ccache目录下,而不是你设置的目录。

3、查看ccache版本信息

ccache --version

ccache版本对比工程目录 alps/prebuilts/misc/linux-x86/ccache下的ccache文件是否是同一个版本,需要使用android源码prebuilts目录下面的ccache工具初始化该文件夹,
推荐的cache目录大小为50-100GB,在命令行执行以下命令:
若不是同一版本

/prebuilts/misc/linux-x86/ccache/   ./ccache -M 50G

若是同一版本

任意路径下: ccache -M 100G   //设置ccache大小为100G

ccache的大小是一个动态的值,每次改变.ccache文件的位置,max cache size都会被初始化

该设置会保存到CCACHE_DIR中,且该命令是长效的,不会因系统重启而失效。使用ccache第一次编译后能够明显提高make clean以后再次的编译速度。

4、查看ccahe使用情况

$ watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s 

以上命令需要在你所下载的代码的根目录下面执行

备注:使用ccache之后,第一次编译会时间久一点,之后每次编译速度都会有提升
5、 创建一个工程目录
这个目录专门用来存放工程文件,若已有无需创建,例如~/workspace
CCACHE提高编译速度的具体使用_第1张图片
6、 把脚本放在该目录下

ccache脚本下载路径

修改权限

chmod 777 mk.perl

7、开始编译
每次编译之前都在工程目录~/workspace下打开终端
执行./mk.perl +project文件,文件路径要求是源码根目录(如MTK的alps等)上一级
在这里插入图片描述
执行成功后会有success提示
8、第一次执行脚本会产生创建一个project_common文件,及一个隐藏文件.project.log,注意不能删除这两个文件,否则导致mk.perl失效
9、进入project_common 开始编译
10、若要还原工程代码,执行

./mk.perl

若要编译其他工程,步骤同上7即可,新的工程会加入到project_common文件中,旧的文件会回到原来的目录
在这里插入图片描述
11、相关问题解答

  • 如何知道自己多个工程在公用一个ccache
    通过命令
watch -n1 -d ccache -s

如果每次编译都有ccache hit (direct) 增加就说明在公用

  • 若把工程放在不同磁盘是否可以设置多个工程路径
    可以,只需要把mk.perl脚本放到新的工程路径下
    但不建议设置过多工程路径,会导致ccache过于臃肿
  • ccache加速效果好吗
    最终结果由硬件性能和软件性能决定
    建议使用告诉固态硬盘,并将ccache文件放在高速固态中
  • ccache如何清除
    使用ccache -C 清除ccache
    使用ccache -Z 清除计数

你可能感兴趣的:(Android之旅)