如何设置ccache?


36

我想使用ccache加快编译速度。

我遇到了如何启用ccache?

到目前为止,这是我所做的:

$ sudo apt-get install -y ccache
$ dpkg -l ccache
ii  ccache  3.1.6-1   Compiler cache for fast recompilation of C/C++ code
$ whereis ccache
ccache: /usr/bin/ccache /usr/lib/ccache /usr/bin/X11/ccache /usr/share/man/man1/ccache.1.gz

ccache通过将路径添加到~/.bashrc文件中来添加该路径:

$ export PATH="/usr/lib/ccache:$PATH"
$ source ~/.bashrc
$ echo $PATH
/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

符号链接看起来不错:

$ ll /usr/lib/ccache/
total 76
drwxr-xr-x   2 root root  4096 mai   22 10:48 ./
drwxr-xr-x 253 root root 69632 mai   22 10:48 ../
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc-4.5.3 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c89-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c99-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 cc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc-4.6 -> ../../bin/ccache*

链接看起来不错:

$ which g++
/usr/lib/ccache/g++

$ make
g++ -o affine_euler affine_euler.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3
g++ -o test_eigen test_eigen.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3

但是缓存是空的:

$ ccache -s
cache directory                     /home/dell/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes

我哪里错了?


我意识到它可以在一般情况下使用,但不适用于我的makefile(例如,与cmake一起使用)。所以我想问题出在我的makefile中,而不是ccache配置中。
维克多·拉莫因

Answers:


45

安装:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

您的路径(至少是起点)应如下所示:

/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

g++/ gcc现在应该指向:

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

组态:

如果您不希望限制文件数量和缓存大小:

ccache -F 0
ccache -M 0

显示缓存统计信息:

ccache -s

清空缓存并重置统计信息:

ccache -C -z

用法:

每次您致电gccg++ccache叫做。我的错误是我没有删除已经编译的文件。只需删除所有CMake/ output文件并再次配置/编译即可。

那你ccache不应该是空的。现在尝试使用a make cleanmake您会发现它比使用缓存重新编译所有内容要快得多。


在遵循此指令后,ccache如何不缓存clang和clang ++ ...
Wang

4

$PATH看起来不正确;ccache的目录应该在其中。赶紧跑:

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

...,然后重试您的g++命令。此目录充满了调用的代理命令ccache。这应该适用于大多数脚本。


如果您只是g++手动调用(与上面使用make的地方不同),则只需添加以下命令即可:

ccache g++ ...

该目录不存在: $ ls -1 /usr/lib/ccache/ avr-g++ avr-gcc avr-gcc-4.5.3 c++ c89-gcc c99-gcc cc g++ g++-4.6 gcc gcc-4.6 x86_64-linux-gnu-g++ x86_64-linux-gnu-g++-4.6 x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc-4.6
Victor Lamoine 2014年

我正在阅读Arch教程。如果一切都在/usr/lib/ccache/使用,那就使用它。
奥利(Oli)

它与and中的export PATH="/usr/lib/ccache/:$PATH" ccache二进制文件不兼容。我试过没有成功这两条路径/usr/bin/usr/bin/X11
维克多Lamoine

但是proxy命令(如您在上面列出的)都在中/usr/lib/ccache/。您添加这些到您的路径,这样,当make来电g++cc也好,它实际上是调用ccache-启用版本。
奥利(Oli)

我已经关闭,因为链接现在指向ccache(我编辑了第一篇文章),但是缓存始终为空。
维克多·拉莫因

1

关于安装:

我发现在Ubuntu 18.04(Bionic Beaver)上,出厂默认不捕获cc和的调用c++。要在那里完全安装ccache,您需要:

sudo apt install ccache
sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"

然后(由于更新了符号链接)也调用cc并被c++捕获!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.