Ich möchte Ccache verwenden , um die Kompilierung zu beschleunigen.
Ich bin auf Folgendes gestoßen: Wie aktiviere ich den Ccache? .
Das habe ich bisher gemacht:
$ 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
Ich ccache
habe den Pfad angehängt , indem ich ihn meiner ~/.bashrc
Datei hinzugefügt habe :
$ 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
Die symbolischen Links sehen gut aus:
$ 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*
Der Link sieht gut aus:
$ 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
Der Cache ist aber leer:
$ 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
Wo irre ich mich
Antworten:
Installation:
Dein Weg (zumindest der Anfang) sollte so aussehen:
Und
g++
/gcc
sollte jetzt zeigen:Aufbau:
Wenn Sie die Anzahl der Dateien und die Größe des Caches nicht beschränken möchten:
Cache-Statistiken anzeigen:
Leere den Cache und setze die Statistiken zurück:
Verwendung:
Bei jedem Anruf
gcc
oderg++
;ccache
wird genannt. Mein Fehler war, dass ich bereits kompilierte Dateien nicht gelöscht habe. Löschen Sie einfach alle IhreCMake
/ output-Dateien und konfigurieren / kompilieren Sie sie erneut.Du
ccache
solltest dann nicht leer sein. Versuchen Sie nun einmake clean
undmake
und Sie werden sehen, dass es dank des Cache viel schneller ist, als alles neu zu kompilieren.quelle
Du
$PATH
siehst nicht richtig aus;ccache
Das Verzeichnis von sollte sich dort befinden. Renn einfach:... und versuchen Sie es
g++
erneut. Dieses Verzeichnis ist voll von Proxy-Befehlen, die aufgerufen werdenccache
. Dies sollte mit den meisten Skripten funktionieren.Wenn Sie nur
g++
manuell anrufen (nicht wie oben, wo Sie make verwenden), können Sie einfach den Befehl voranstellen:quelle
$ 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/
benutze das einfach.export PATH="/usr/lib/ccache/:$PATH"
ccache binary in/usr/bin
und/usr/bin/X11
. Ich habe es mit beiden Wegen erfolglos versucht/usr/lib/ccache/
. Sie fügen diese so auf Ihren Weg, wennmake
Anrufeg++
odercc
oder was auch immer, es ist eigentlich die anrufccache
-fähigen Version.In Bezug auf die Installation:
Ich habe festgestellt, dass bei Ubuntu 18.04 (Bionic Beaver) die Standardeinstellung keine Aufrufe von
cc
und abfängtc++
. Um ccache dort vollständig zu installieren, benötigen Sie:Und dann (wegen aktualisierter Symlinks) auch noch anrufen
cc
undc++
erwischt werden!quelle