LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3696|回复: 4

用ccache加速你的编译过程

[复制链接]
发表于 2008-5-27 01:25:33 | 显示全部楼层 |阅读模式
无意间发现了ccache这么个好东西,或许大家都知道,就我火星了。

安装使用都很简单,对同一软件的同一或更新版本进行第二次编译速度是成倍(5-10倍)增长的。所以,像一些几乎每天更新的软件如git, svn, cvs, bzr等等效果显著,当然如果你想对同一个版本的软件修改编译参数也依然能享受到速度的乐趣。总之,有利无害,能够确保编译效果和make clean之后一致。
wiki上有相关介绍,只是过时了,其实改一处地方即可。见原文: http://wiki.archlinux.org/index. ... g_with_ccache_HOWTO

主页:http://ccache.samba.org
介绍:ccache is a compiler cache. It acts as a caching pre-processor to C/C++ compilers, using the -E compiler switch and a hash to detect when a compilation can be satisfied from cache. This often results in a 5 to 10 times speedup in common compilations.

The idea came from Erik Thiele wrote the original compilercache program as a bourne shell script. ccache is a re-implementation of Erik's idea in C with more features and better performance.
安装:
sudo pacman -S ccache。
设置:修改/etc/makepkg.conf
找到ccache,把前面的!去掉保存即可,改成 BUILDENV=(fakeroot !distcc color ccache !xdelta)
注意:ccache会在~/.ccache保存缓存的编译文件,可以设置缓存大小,文件数目等。具体参见man ccache。

顺便说一下,makepkg.conf里还有不少东西可以修改,参见:http://wiki.archlinux.org/index.php/Makepkg.conf

cflags就不再多说了,推荐用 CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
多核的可以打开MAKEFLAGS="-j2"
分布式编译可以打开distcc
想要man以外的doc,可以去掉OPTIONS=(strip !docs libtool emptydirs)中 !doc 前的!
PKGDEST可以设置生成包的路径,尤其是yaourt喜欢把aur的生成的包都放在/tmp,导致如果你选择不安装就会被删掉,浪费时间。
SRCDEST可设置下载的source的保存地址。
PACKAGER设置你的名字,以后包的信息中就会有了。
还有一些参见wiki。
发表于 2008-5-27 04:31:09 | 显示全部楼层
编辑一下文章,把 wiki 地址加上吧。
回复 支持 反对

使用道具 举报

发表于 2008-5-27 07:12:20 | 显示全部楼层
好呀!这个就会加快速度了,减少编译的时间。
回复 支持 反对

使用道具 举报

发表于 2008-5-27 11:07:47 | 显示全部楼层
楼上貌似弄错了。。这个是用在非第一次编译的时候加速的。第一次编译还是那个速度,除非你经常编译同一个包,不然是没有必要使用的
回复 支持 反对

使用道具 举报

发表于 2008-5-27 11:55:30 | 显示全部楼层
如果经常更新cvs、svn、git等的包,ccache还是值得用的

makepkg.conf设置的结果,只是makepkg使用时简单将/usr/lib/ccache/bin的路径致前,需要进一步定制的话,要么简单包装一个makepkg(当然需要chmod
+x的)放到最前的搜索路径中,要么在~/.bashrc中设置相关环境变量等,个人的是~/bin/makepkg,同时~/.bashrc中的搜索路径为:
export PATH=$HOME/binPATH

同时debian中的ccache有许多补丁最好打上(apt-get source
ccache后,将ccache-2.4/debian/patches移至ccache目录下)
打包时,pkgbuild中加上:

  1. ...
  2. for i in ${startdir}/patches/*.diff;
  3.       do patch -p0 -i $i ;
  4. done
  5. ...
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表