46 votes

Comment configurer ccache ?

Je veux utiliser ccache pour accélérer la compilation.

Je suis tombé sur Comment activer ccache ? .

Voici ce que j'ai fait jusqu'à présent :

$ 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

J'ai ajouté ccache au chemin d'accès en l'ajoutant à mon ~/.bashrc fichier :

$ 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

Les liens symboliques semblent corrects :

$ 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*

Le lien semble bon :

$ 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

Mais le cache est vide :

$ 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

Où ai-je tort ?

59voto

Victor Lamoine Points 2111

Installation :

# 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

Votre chemin (au moins au début) devrait ressembler à ceci :

/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

Et g++ / gcc devrait maintenant pointer vers :

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

Configuration :

Si vous ne souhaitez pas limiter le nombre de fichiers et la taille du cache :

ccache -F 0
ccache -M 0

Afficher les statistiques du cache :

ccache -s

Vider le cache et réinitialiser les statistiques :

ccache -C -z

Utilisation :

Chaque fois que vous appelez gcc o g++ ; ccache est appelé. Mon erreur est de ne pas avoir supprimé les fichiers déjà compilés. Il suffit de supprimer tous les fichiers CMake /et configurer/compiler à nouveau.

Votre ccache ne devrait donc pas être vide. Essayez maintenant un make clean y make et vous verrez que c'est beaucoup plus rapide que de tout recompiler grâce au cache.

4voto

Mufaka Points 54

Votre $PATH ne semble pas correcte ; ccache devrait s'y trouver. Exécutez simplement :

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

... et essayez votre g++ commande à nouveau. Ce répertoire est plein de commandes proxy qui appellent ccache . Cela devrait fonctionner avec la plupart des scripts.


Si vous appelez simplement g++ manuellement (pas comme ci-dessus où vous utilisez make), vous pouvez simplement ajouter la commande en préambule :

ccache g++ ...

1voto

Jürgen Weigert Points 571

En ce qui concerne l'installation :

J'ai constaté que sur Ubuntu 18.04 (Bionic Beaver), la version livrée par défaut ne prend pas en compte les invocations de cc y c++ . Pour installer complètement ccache, vous devez :

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

Et ensuite (en raison de la mise à jour des liens symboliques) également des appels à cc y c++ se faire prendre !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X