Я хочу использовать ccache для ускорения компиляции.
Я сталкивался Как включить ccache? ,
Это то, что я сделал до сих пор:
$ 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
Я ccache
добавил к пути, добавив его в мой ~/.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
Символические ссылки выглядят хорошо:
$ 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*
Ссылка выглядит хорошо:
$ 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
Но кеш пуст:
$ 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
Где я не прав?
Ответы:
Установка:
Ваш путь (по крайней мере, начало) должен выглядеть так:
И
g++
/gcc
теперь должен указывать на:Конфигурация:
Если вы не хотите ограничивать количество файлов и размер кэша:
Показать статистику кеша:
Очистите кеш и сбросьте статистику:
Использование:
Каждый раз, когда вы звоните
gcc
илиg++
;ccache
называется. Моя ошибка заключалась в том, что я не удалял уже скомпилированные файлы. Просто удалите все вашиCMake
/ выходные файлы и настройте / скомпилируйте снова.Вы
ccache
не должны быть пустыми тогда. Теперь попробуйтеmake clean
и ,make
и вы увидите , что это намного быстрее , чем перекомпиляции все , что благодаря кэш - памяти.источник
Вы
$PATH
не выглядите правильно;ccache
Каталог должен быть там. Просто беги:... и попробуйте свои
g++
команды снова. Этот каталог полон прокси-команд, которые вызываютccache
. Это должно работать с большинством сценариев.Если вы просто вызываете
g++
вручную (не так, как описано выше, где вы используете make), вы можете просто добавить команду:источник
$ 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/
используется, просто используйте это.export PATH="/usr/lib/ccache/:$PATH"
бинарным ccache в/usr/bin
и/usr/bin/X11
. Я пытался с обоими этими путями безуспешно/usr/lib/ccache/
. Вы добавляете их в свой путь , так что , когдаmake
вызовыg++
илиcc
или независимо от того , что это на самом деле вызываяccache
-Enabled версию.По поводу установки:
Я обнаружил, что в Ubuntu 18.04 (Bionic Beaver) поставляемый по умолчанию не перехватывает вызовы
cc
иc++
. Чтобы полностью установить ccache, вам необходимо:И затем (из-за обновленных символических ссылок) также звонки
cc
иc++
поймали!источник