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 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 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?
Réponses:
Installation:
Votre chemin (au moins le début) devrait ressembler à:
Et
g++
/gcc
devrait maintenant indiquer:Configuration:
Si vous voulez aucune limite au nombre de fichiers et à la taille du cache:
Afficher les statistiques du cache:
Videz le cache et réinitialisez les statistiques:
Usage:
Chaque fois que vous appelez
gcc
oug++
;ccache
est appelé. Mon erreur est que je n'ai pas supprimé les fichiers déjà compilés. Supprimez simplement tous vosCMake
fichiers / output et configurez / compilez à nouveau.Vous
ccache
ne devriez pas être vide alors. Maintenant, essayez unmake clean
et,make
et vous verrez que c'est beaucoup plus rapide que de tout recompiler grâce au cache.la source
Votre
$PATH
ne semble pas correct;ccache
Le répertoire de devrait être dedans. Il suffit de courir:... et essayez à
g++
nouveau vos commandes. Ce répertoire est plein de commandes proxy qui appellentccache
. 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:la source
$ 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
/usr/lib/ccache/
juste l'utiliser.export PATH="/usr/lib/ccache/:$PATH"
binaire ccache est/usr/bin
et/usr/bin/X11
. J'ai essayé avec ces deux chemins sans succès/usr/lib/ccache/
. Vous ajouter à votre chemin de sorte que lorsque desmake
appelsg++
oucc
ou autre, qu'il appelle en fait laccache
Version -Enabled.Concernant l'installation:
J'ai trouvé que sur Ubuntu 18.04 (Bionic Beaver), la valeur par défaut fournie ne permet pas de saisir les appels de
cc
etc++
. Pour y installer complètement ccache, il vous faut:Et puis (en raison de liens symboliques mis à jour) appelle également à
cc
etc++
se faire prendre!la source