Ccache'i nasıl ayarlarım?


36

Derlemeyi hızlandırmak için ccache kullanmak istiyorum .

Karşılaştığım ccache'yi nasıl etkinleştiririm? .

Şimdiye kadar yaptığım şey bu:

$ 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

Dosyama ccacheekleyerek yola ekledim ~/.bashrc:

$ 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

Sembolik linkler iyi görünüyor:

$ 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*

Bağlantı iyi görünüyor:

$ 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

Ancak önbellek boş:

$ 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

Ben nerde hatalıyım?


Genel durumda işe yaradığını fark ettim ama makefile ile değil (örneğin cmake ile çalışır). Sanırım problem benim dosyamda ve ccache konfigürasyonunda değil.
Victor Lamoine

Yanıtlar:


45

Kurulum:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

Yolunuz (en azından başlangıç) şöyle görünmeli:

/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

Ve g++/ gccşimdi işaret etmelidir:

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

Yapılandırma:

Dosya sayısında ve önbellek boyutunda sınırlama istemiyorsanız:

ccache -F 0
ccache -M 0

Önbellek istatistiklerini göster:

ccache -s

Önbelleği boşaltın ve istatistikleri sıfırlayın:

ccache -C -z

Kullanımı:

Her aradığınızda gccveya g++; ccachedenir. Benim hatam derlenmiş dosyaları silmememdi. Tüm CMake/ çıktı dosyalarınızı silin ve yeniden yapılandırın / derleyin.

Sizin ccacheardından boş olmamalıdır. Şimdi bir deneyin make cleanve makeönbellek sayesinde her şeyi yeniden derlemekten çok daha hızlı olduğunu göreceksiniz.


bazıları bu talimatı izledikten sonra, ccache clang ve clang önbellekleme yapmıyor ++ ...
Wang

4

Sizin $PATHdoğru görünmüyor; ccache'nin dizini orada olmalı. Sadece koş:

export PATH="/usr/lib/ccache/:$PATH"

... g++komutlarınızı tekrar deneyin . Bu dizin çağıran proxy komutlarıyla doludur ccache. Bu çoğu komut dosyası ile çalışmalıdır.


Yalnızca g++el ile arama yapıyorsanız (make'i kullandığınız yerden yukarıdaki gibi değil), sadece komutu hazırlayabilirsiniz:

ccache g++ ...

Bu dizin mevcut değil: $ 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
Victor Lamoine

Bir Kemer dersi okuyordum. Her şey /usr/lib/ccache/sadece kullanımda ise bunu kullanın.
Oli

export PATH="/usr/lib/ccache/:$PATH" Ccache ile çalışmazsa ikilidir /usr/binve içindedir /usr/bin/X11. Bu iki yolu da başarılı olmadan denedim
Victor Lamoine

Ancak proxy komutları (yukarıda listelendiğiniz gibi) hepsi içeridedir /usr/lib/ccache/. Çok zaman senin yoluna eklemenin makeçağrılar g++ya ccya da her türlü, aslında aradığını ccacheetkinleştirilmiş sürümü.
Oli

Bağlantılıyım çünkü bağlantı şimdi önbelleğe işaret ediyor (ilk yazıyı düzenledim), ancak önbellek her zaman boş.
Victor Lamoine

1

Kurulum ile ilgili:

Ubuntu 18.04 (Biyonik Kunduz) 'da gönderilen varsayılanın ccve' nin çağrılarını yakalamadığını öğrendim c++. Oraya tamamen ccache yüklemek için, şunlara ihtiyacınız var:

sudo apt install ccache
sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"

Ve sonra (güncellenmiş sembolik bağlantılar nedeniyle) ayrıca arama yapar ccve c++yakalanır!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.