Ccache
Un article de ALW - Another Linux Wiki.
[modifier] Introduction
ccache est un cache de compilation. Il utilise le flag -E de gcc et un hash pour détecter quand une compilation peut tirer partie du cache. On peut avoir une compilation de 5 à 10 fois plus rapide pour les compilations courantes.
Les zones de travail courantes pour ccache sont:
/root/.ccache /var/tmp/ccache
Les exemples ci dessous considèrent que le ccache travail dans /root/. Il suffira d'adapter aux besoins de chacun.
[modifier] Installation
Portage doir être d'une version supérieure à la 2.0.46-r11. emerge --version nous repondra sur ce point. Ensuite vient l'installation proprement dite.
$ emerge dev-util/ccache
Ensuite il suffit d'ajouter "ccache" et "CCACHE_DIR" dans le make.conf.
| File: /etc/make.conf |
|
FEATURES="ccache" CCACHE_DIR="/root/.ccache" #Ce paramètre est ajouté par défaut par portage dans ses versions récentes |
Si vous utilisez aussi Distcc, il faut s'assurer de mettre "ccache" avant "distcc" dans la liste des FEATURES du make.conf pour en tirer le meilleur avantage.
On régle la taille du cache également dans le make.conf:
| File: /etc/make.conf |
|
CCACHE_SIZE="2G" |
La valeur par defaut est de 512Mo. On peut également régler cette valeur via la commande ccache:
ccache -M 2G
Un réglage via ccache sans passer par la case make.conf ne conservera pas la valeur après un reboot.
Pour être sûr que ccache fonctionne, on va observer l'état du cache après avoir utilisé emerge. Si ccache est actif ça devrait ressembler à ca:
$ ccache -s cache hit 189 cache miss 1983 called for link 159 multiple source files 4 compile failed 52 preprocessor error 4 bad compiler arguments 3 not a C/C++ file 141 autoconf compile/link 357 unsupported compiler option 30 no input file 145 files in cache 3966 cache size 30.1 Mbytes max cache size 2.0 Gbytes
Si le cache n'est pas utilisé c'est qu'il doit y avoir un soucis :o)
[modifier] Conclusion
ccache nous permet de tirer profit des nombreuses compilations qu'on peut faire sous gentoo. Ce n'est pas profitable à toutes les applis, mais pourquoi se priver :-)
Utiliser avec Distcc cela apporte un réel confort d'utilisation.
