Je veux utiliser ccache pour accélérer la compilation.
Je suis tombé sur Comment puis-je 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 en l'ajoutant à mon fichier ~/.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
Les liens symboliques ont l'air bien:
$ 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 a l'air bien:
$ 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 la 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ù est-ce que je me trompe?
# 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 le début) devrait ressembler à:
/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
Si vous voulez aucune limite au nombre de fichiers et à la taille du cache:
ccache -F 0
ccache -M 0
Afficher les statistiques du cache:
ccache -s
Videz le cache et réinitialisez les statistiques:
ccache -C -z
Chaque fois que vous appelez gcc
ou g++
; ccache
est appelé. Mon erreur est que je n'ai pas supprimé les fichiers déjà compilés. Supprimez simplement tous vos fichiers CMake
name __/output et configurez/compilez à nouveau.
Votre ccache
ne devrait pas être vide alors. Maintenant, essayez un make clean
et un make
et vous verrez que c'est beaucoup plus rapide que de tout recompiler grâce au cache.
Votre $PATH
ne semble pas correct; Le répertoire ccache
devrait y être. Il suffit de courir:
export PATH="/usr/lib/ccache/:$PATH"
... et essayez à nouveau vos commandes g++
. Ce répertoire est plein de commandes de proxy qui appellent ccache
. Cela devrait fonctionner avec la plupart des scripts.
Si vous appelez simplement g++
manuellement (contrairement à make où vous utilisez make), vous pouvez juste ajouter la commande:
ccache g++ ...
Concernant l'installation:
J'ai trouvé que sur buntu 18.04 (Bionic Beaver), la valeur par défaut fournie ne permet pas de saisir les invocations de cc
et c++
. Pour y installer complètement ccache, il vous faut:
Sudo apt install ccache
Sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"
Et puis (à cause des liens symboliques mis à jour), les appels à cc
et c++
sont également interceptés!