Ccache
Aus Gentoo Linux Wiki
| Terminals / Shells • X • Portage • System • Dateisysteme • Kernel • Netzwerk• Sonstiges • alphabetischer Tipp Index |
Inhaltsverzeichnis |
[Bearbeiten] Einleitung
ccache ist ein Zwischenspeicher (Cache) für Compiler. Es verwendet den gcc-Schalter "-E" sowie einen Hash-Wert, um festzustellen, ob bereits zuvor compilierte Teile eines Pakets aus dem Cache geliefert werden können und somit nicht mehr compiliert werden müssen. Im Optimalfall kann dies einen 5-10fachen Geschwindigkeitsgewinn beim Installieren von Paketen bedeuten.
[Bearbeiten] ccache-Verzeichnis
Das ccache-Verzeichnis kann an folgenden Stellen gefunden werden:
- /root/.ccache
- /var/tmp/ccache
Die untengenannten Beispiele setzen voraus, dass der ccache unter /root zu finden ist. Ändern Sie den Pfad in den Befehlen so, dass er dem ccache-Verzeichnis entspricht.
[Bearbeiten] Installation
- Zuerst sollten Sie überprüfen, ob Ihr Portage neuer als 2.0.46-r11 ist: emerge --version
- Emerge ccache: emerge -av dev-util/ccache
- Nun sollten Sie die "ccache"-Option zu Ihrer Feature-List hinzufügen. Dadurch kann ccache auch von emerge genutzt werden. Jetzt setzen Sie die CCACHE_DIR-Variable in der Datei /etc/make.conf auf Ihr ccache Verzeichnis. Also zum Beispiel:
| Datei: /etc/make.conf |
... FEATURES="ccache" CCACHE_DIR="/root/.ccache" # (Standardeinstellung in neuen Portage-Versionen) ... |
Wenn Sie auch distcc benutzen, achten Sie darauf, dass die "ccache" Option als erstes und die "distcc" Option als zweites gesetzt wird, damit Sie die Vorteile beider Programme nutzen können.
Legen Sie die Cachegröße fest, z.B. wie hier:
| Datei: /etc/make.conf |
... CCACHE_SIZE="2G" ... |
Obiges stellt die Cachegröße auf 2GB. Sie können auch ccache -M 2G benutzen. Diese Einstellung wird das nächste emerge aber nicht überleben (es wird von der Standardeinstellung 512Mb in der make.conf überschrieben).
Nun testen Sie ccache, nachdem Sie ein paar Programme mit emerge installiert haben. Sie müssen natürlich einige Pakete "emergen", sonst ist der ccache logischerweise leer.
| Code: /bin/bash |
$ ccache -s /* Die Ausgabe sollte ungefähr so aussehen */ 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 |
Wenn kein Platz benutzt wird, ist Ihr ccache Verzeichis immer noch leer, oder es wird nicht die richtige Statistik angezeigt. Hilfe dazu gibt es weiter unten.
[Bearbeiten] Fehlerbeseitigung
Da neuere Versionen automatisch /var/tmp/ccache erzeugen und emerge die Dateirechte überprüft, müssen Sie dem System möglicherweise das Cache-Verzeichnis bekanntgeben, damit die Statistiken funktionieren:
| Code: /bin/bash |
echo "CCACHE_DIR=\"/root/.ccache\"" >> /etc/env.d/99local env-update source /etc/profile |
[Bearbeiten] Dateirechte für den ccache festlegen
Manchmal versucht ccache vor und nach dem emerge, die Dateirechte für das ccache-Verzeichnis neu zu setzen. Benutzen Sie diesen Befehl, um das zu korrigieren:
chmod g+X -R /root/.ccache
[Bearbeiten] ccache arbeitet nicht richtig mit der Einstellung FEATURES="userpriv"
Es scheint, als würde ccache nur während des Configure, aber nicht während des eigentlichen make-Prozesses aufgerufen, wenn userpriv benutzt wird. Falls Sie userpriv nicht unbedingt benötigen, entfernen Sie es einfach, und ccache wird ohne Probleme laufen.
Im Gentoo-Bugzilla ist eine Lösung. --Jary 21:18, 4 Aug 2005 (GMT)
Dieser Fehler wurde beseitigt in Portage >=2.0.53_rc3 --Kream 12:08, 26 January 2006 (GMT)
[Bearbeiten] ccache arbeitet selbst nach einem "Remerge" nicht richtig
Anscheinend arbeitet ccache manchmal selbst nach einem "Remerge" nicht richtig. Eine Lösung kann sein, "/var/tmp/ccache" zu löschen und ccache noch einmal neu zu installieren.
Wenn Sie ccache neu installieren, vergessen Sie nicht, ccache die maximale Cache-Größe mitzuteilen, z.B. mit
#ccache -M 2G
(oder einem anderen Wert, den Sie einstellen möchten).
Bitte vergessen Sie auch nicht, 'CCACHE_DIR="/root/.ccache"' zur Datei /etc/env.d/99local hinzuzufügen und
#env-update #source /etc/profile
auszuführen.
Danach prüfen Sie, mit
#ccache -s
ob es funktioniert hat.
Die Änderungen sollten sich in einer korrekten Ausgabe widerspiegeln.
--Philippe Cornu (Paris, Frankreich) 21:18, 4 Aug 2005 (GMT)
