Wouah ! Comment j't'ai cachéééé !
Par Jean-Seb le samedi 18 août 2007, 19:43 - Linuxeries - Lien permanent
Gentoo roxxe. Mais les temps de compilations, ça suxxe.
Solution: un cache de compilation pour accélérer le mouvement !
C'est lent cette compilation !
Solution: utiliser un cache de compilation qui garde les objets non modifiés, et les transmets au compilateur si nécessaire.
Et en plus, c'est génial si vous codez et que vous découpez bien vos programmes.
ccache = cache pour gcc accélérant les compilations
Espace disque requis
2 Go dispos sur le disque pour l'utiliser
(on peut descendre à 512mo permanents, et 2go en pointe)
Installation
# emerge -av ccache
# ccache-config --install-links $MON_CHOST (MON_CHOST
est obtenu avec gcc-config -l, ou en regardant dans
/etc/make.conf). Si on prend la sortie de gcc-config -l, il
ne faut pas mettre le numéro de version.
# ccache-config --install-links i686-pc-linux-gnu
Vérifications:
# ls /usr/lib/ccache/bin/ -l
c++ -> /usr/bin/ccache g++ -> /usr/bin/ccache gcc -> /usr/bin/ccache i386-pc-linux-gnu-c++ -> /usr/bin/ccache i386-pc-linux-gnu-g++ -> /usr/bin/ccache i386-pc-linux-gnu-gcc -> /usr/bin/ccache i686-pc-linux-gnu-c++ -> /usr/bin/ccache i686-pc-linux-gnu-g++ -> /usr/bin/ccache i686-pc-linux-gnu-gcc -> /usr/bin/ccache
C'est Emerge qui doit mettre en principe le rep. /usr/lib/ccache/bin/ en tête de PATH avant de compiler.
(merci à Fred pour cette précision).
Vous pouvez aussi vérifier la version de votre compilateur avec gcc
-v
Cette commande doit donner: i686-pc-linux-gnu (normalement)
Si vous avez un environnement de compilation plus ancien, il est temps de mettre à jour (voir mon billet du 3 août 2007).
Fichiers de configuration
dans /etc/make.conf :
FEATURES="ccache" CCACHE_SIZE="2G"
Ceci va ajuster l'éspace disque du cache à 2GB.
Vous pouvez également utiliser ccache -M 2G, mais celà n'activera le cache que pour l'emerge en cours (il sera automatiquement remis à 512Mb ensuite).
Création du cache pour première utilisation
cd /var/tmp mkdir ccache chown portage:portage ccache chmod 775 ccache echo "CCACHE_DIR=\"/var/tmp/ccache\"" >> /etc/env.d/99local env-update source /etc/profile
Et si ça ne cache pas...
- Si ça se plante à la compilation parce qu'il ne trouve pas le compilo:
# gcc-config -l
- noter le nom obtenu (le numéro de version n'a pas d'importance)
Ex : i386-pc-linux-gnu-4.1.1 ==> i386-pc-linux-gnu
# fix_libtool_files.sh `gcc -dumpversion` --oldarch
i686-pc-linux-gnu
mettre ce nom dans CHOST (fichier /etc/make.conf)
A noter que normalement, on ne modifie jamais son CHOST
LA commande utile
Pour avoir les stats du cache:
ccache -s
(ccache -h pour toutes les commandes)