From ArchWiki
Revision as of 15:21, 24 December 2017 by Francoism (talk | contribs) (Set maximum cache size: Use command instead)
Jump to navigation Jump to search

ccache is a tool for the gcc compiler used to compile the same program over and over again with little downtime. While it may take a few seconds longer to compile a program the first time with ccache, subsequent compiles will be much, much faster.


Install the ccache package.


The default behavior can be overridden by configuration files. Priority of the configuration settings is as follows (where 1 is highest):

  1. Environment variables
  2. Cache-specific configuration file ($HOME/.ccache/ccache.conf)
  3. System-wide configuration file (/etc/ccache.conf)

Enable ccache for makepkg

To enable ccache when using makepkg edit /etc/makepkg.conf. In BUILDENV uncomment ccache (remove the exclamation mark) to enable caching. For example:

BUILDENV=(fakeroot !distcc color ccache check !sign)

Enable for command line

If you are compiling your code from the command line, and not building packages, then you will still want to use ccache to help speed things up.

For that, you need to change your $PATH to include ccache's binaries before the path to your compiler:

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

You may want to add this line to your ~/.bashrc file for regular usage.

Note: This will inevitably enable ccache for makepkg as well if invoked with this PATH.

Enable with colorgcc

Since colorgcc is also a compiler wrapper, some care needs to be taken to ensure each wrapper is called in the correct sequence.

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

Then colorgcc needs to be told to call ccache instead of the real compiler. Edit /etc/colorgcc/colorgccrc and change the /usr/bin paths to /usr/lib/ccache/bin for all the compilers in /usr/lib/ccache/bin:

g++: /usr/lib/ccache/bin/g++
gcc: /usr/lib/ccache/bin/gcc
c++: /usr/lib/ccache/bin/g++
cc: /usr/lib/ccache/bin/cc


Change the cache directory

You may want to move the cache directory to a faster location than the default ~/.ccache directory, like an SSD or a ramdisk.

To change the cache location only in the current shell:

$ export CCACHE_DIR=/ramdisk/ccache

Or to change the location by default:

cache_dir = /ramdisk/ccache

Set maximum cache size

The default value is 5 gigabyte, however it is possible to use a lower or even a higher value:

$ ccache --set-config=max_size=2.0G

Disable the cache via environment

If you wish to disable CCache only in the current shell:



You can use the command-line utility ccache to show a statistics summary:

$ ccache -s

or clear the cache completely:

$ ccache -C


It is also possible to use ccache with makechrootpkg. To retain the cache when the chroot is cleaned the makechrootpkg option -d can be used to bind the cache directory from the regular system into the chroot, eg.:

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

Then ccache can be configured for the chroot in the same way as explained above for the regular system.

See also