Ccache

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der TIPPs & Tricks Sammlung.
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:

  1. /root/.ccache
  2. /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

  1. Zuerst sollten Sie überprüfen, ob Ihr Portage neuer als 2.0.46-r11 ist: emerge --version
  2. Emerge ccache: emerge -av dev-util/ccache
  3. 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.

Patrik Fimml

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)

[Bearbeiten] Mehr Informationen

'Persönliche Werkzeuge