Ccache (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Ccache翻译。上次翻译日期:2017-11-27。如果英文版本有所更改,则您可以帮助同步翻译。

Ccache 是一个编译工具,可以加速 gcc 对同一个程序的多次编译。尽管第一次编译会花费长一点的时间,有了ccache,后续的编译将变得非常非常快。

安装

安装 位于 官方软件仓库ccache 软件包。

配置

可以用配置文件修改默认行为,优先级由高到低为:

  1. 环境变量
  2. 单个 Cache 的配置文件($HOME/.ccache/ccache.conf)
  3. 系统配置文件 (/etc/ccache.conf)

为 makepkg 启用 ccache

要在 makepkg 启用 ccache,请编辑 /etc/makepkg.conf. 在 BUILDENV 中删除 ccache 前的感叹号:

 BUILDENV=(fakeroot !distcc color ccache !xdelta)
注意: 如果要编译 KDE ,需要不要导出 CPP 而是导出 CXX — 这将会避免一些错误。

启用命令行

如果从命令行编译而不是生成软件包,也可以使用ccache提高速度。

先修改 $PATH,添加ccache所在路径。

export PATH="/usr/lib/ccache/bin/:$PATH"

可以将其加入 ~/.bashrc,这样以后可以一直使用。

如果使用此 PATH,makepkg 也会启用 ccache。

启用 colorgcc 支持

colorgcc 也是一个编译器外壳,所以需要确保外壳的调用顺序是正确的。

export PATH="/usr/lib/colorgcc/bin/:$PATH"    # As per usual colorgcc installation, leave unchanged (don't add ccache)
export CCACHE_PATH="/usr/bin"                 # Tell ccache to only use compilers here

colorgcc 需要调用 ccache 而不是真正的编译器。编辑/etc/colorgcc/colorgccrc 修改所有/usr/bin 路径为/usr/lib/ccache/bin

/etc/colorgcc/colorgccrc
g++: /usr/lib/ccache/bin/g++
gcc: /usr/lib/ccache/bin/gcc
c++: /usr/lib/ccache/bin/g++
cc: /usr/lib/ccache/bin/gcc
g77:/usr/bin/g77
f77:/usr/bin/g77
gcj:/usr/bin/gcj

Misc

修改缓存目录

可以将缓存目录 ~/.ccache 配置到其它地方,例如 SSD 或 ramdisk:

要在修改当前 shell 的缓存目录:

$ export CCACHE_DIR=/ramdisk/ccache

要修改默认缓存目录:

/home/user/.ccache/ccache.conf
cache_dir = /ramdisk/ccache

设置最大缓存大小

默认值是 5G,可以通过配置修改:

/home/<user>/.ccache/ccache.conf
max_size = 2.0G

CLI

此外可以使用 ccache 命令行工具。

显示统计数据:

$ ccache -s

清空缓存:

$ ccache -C

makechrootpkg

makechrootpkg 也可以使用 ccache,要在清理 chroot 后保留缓存,可以使用 makechrootpkg 的 -d 选项将 cache 目录从普通系统绑定到 chroot:

$ mkdir /path/of/chroot/ccache
$ makechrootpkg -d /path/to/cache/:/ccache -r /path/of/chroot -- CCACHE_DIR=/ccache

这样 chroot 中就可以和正常系统中一样配置和使用 ccache.

参阅