ссache (compiler cache)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:20, 24 декабря 2016.

ccache
Ccache3.png
Разработчики: Эндрю Триджелл
Выпущена: 2004; 15 years ago (2004)
Предыдущий выпуск: 3.3.3 / 2016; 3 years ago (2016)
Операционная система: Linux,
Unix based
Лицензия: GNU GPL
Веб-сайт ccache.samba.org

cсache (от англ. compiler cache; произносится «сикэш») — кэш компиляторов языка С и С++ для Linux и других Unix-подобных систем.

Использование ссache может значительно ускорить сборку некоторых пакетов или проектов, которые компилируются несколько раз, так как заново компилироваться будут только файлы, которые изменились с последней компиляции.

Принцип работы

При своей работе ccache на основе компилируемого файла, опций компилятора и выводимых им предупреждений/ошибок вычисляет хэш (по алгоритму md4) и сохраняет его, результат компиляции и все сообщения компилятора в папке кэша (~/.ccache). Если при вызове ccache оказывается, что этот файл уже компилировался (проиводится сравнение хэша), вместо реального вызова компилятора ccache выдает откомпилированный файл из своего кэша и при необходимости генерирует те же сообщения, которые в нормальных условиях выдал бы компилятор. Разумеется, проверка и выдача из кэша результата гораздо быстрее обычной компиляции.

Способы использования ccache

Первый способ

Вместо вызова, например, gcc -c foo.c -o foo.o -O2 и т.д. использовать ccache gcc -c foo.c -o foo.o -O2. В таком случае при сборке многофайловых проектов (использующих Makefile), т.е. всех сколько-нибудь серьезных программ, надо как-то сообщать make, что компилятором является не gcc, а "ccache gcc". Обычно для этого надо запускать make так:

         make CC="ccache gcc" CXX="ccache g++"

Второй способ

Вариант, не требующий внесения дополнительных изменений в процесс сборки - поставить ccache в /usr/local и сделать с него ссылки на /usr/local/bin/gcc:

         cp ccache /usr/local/bin/
         ln -s /usr/local/bin/ccache /usr/local/bin/gcc
         ln -s /usr/local/bin/ccache /usr/local/bin/cc

При этом командой gcc будет вызываться /usr/local/bin/ccache (файлы из /usr/local/bin имеют преимущество перед файлами из /usr/bin), который будет выполнять свою работу и при необходимости вызывать настоящий gcc (из /usr/bin).

Опции командной строки

  • -s показывает статистику работы (в частности, число сохраненных результатов компиляции, число компиляций, когда файл был выдан из кэша, и текущий размер кэша);
  • -F и -M позволяют установить максимальный размер кэша (по числу файлов и объему соответственно);
  • -C полностью очищает кэш.

Близкие проекты

  1. CRUX
  2. GoboLinux
  3. Source Mage Linux

Источники

  • Samba [Электронный ресурс]: Cсache / Дата обращения:24.12.2016. — Режим доступа: https://ccache.samba.org/
  • Википедия [Электронный ресурс]: Cсache / Дата обращения:24.12.2016. — Режим доступа: https://en.wikipedia.org/wiki/Ccache