Saya ingin menggunakan ccache untuk mempercepat kompilasi.
Saya menemukan Bagaimana cara mengaktifkan ccache? .
Inilah yang telah saya lakukan sejauh ini:
$ 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
Saya menambahkan ccache
ke jalur dengan menambahkannya ke ~/.bashrc
file saya :
$ 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
Tautan simbolis terlihat baik-baik saja:
$ 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*
Tautannya terlihat bagus:
$ 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
Tetapi cache kosong:
$ 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
Dimana saya salah
Jawaban:
Instalasi:
Jalan Anda (setidaknya awal) akan terlihat seperti:
Dan
g++
/gcc
sekarang harus menunjuk ke:Konfigurasi:
Jika Anda tidak ingin membatasi jumlah file dan ukuran cache:
Tampilkan statistik cache:
Kosongkan cache dan setel ulang statistik:
Pemakaian:
Setiap kali Anda menelepon
gcc
ataug++
;ccache
disebut. Kesalahan saya adalah saya tidak menghapus file yang sudah dikompilasi. Hapus saja semuaCMake
file / output Anda dan konfigurasikan / kompilasi lagi.Anda
ccache
tidak boleh kosong kalau begitu. Sekarang coba amake clean
danmake
dan Anda akan melihatnya jauh lebih cepat daripada mengkompilasi ulang semuanya berkat cache.sumber
Anda
$PATH
tidak terlihat benar;ccache
Direktori harus ada di sana. Lari saja:... dan coba
g++
perintah Anda lagi. Direktori ini penuh dengan perintah proxy yang memanggilccache
. Ini harus bekerja dengan sebagian besar skrip.Jika Anda hanya menelepon
g++
secara manual (tidak seperti di atas tempat Anda menggunakan make), Anda bisa menambahkan dulu perintah:sumber
$ 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/
hanya gunakan saja.export PATH="/usr/lib/ccache/:$PATH"
ccache binary di/usr/bin
dan/usr/bin/X11
. Saya mencoba dengan kedua jalan ini tanpa hasil/usr/lib/ccache/
. Anda menambahkan ini ke jalur Anda sehingga ketikamake
panggilang++
ataucc
atau apa pun, itu benar-benar memanggilccache
versi berkemampuan.Mengenai instalasi:
Saya telah menemukan bahwa di Ubuntu 18.04 (Bionic Beaver) default yang dikirim tidak menangkap doa
cc
danc++
. Untuk menginstal ccache sepenuhnya di sana, Anda perlu:Dan kemudian (karena symlink yang diperbarui) juga memanggil
cc
danc++
tertangkap!sumber