ccache
ссache (от англ. compiler cache; произносится «сикэш») — кэш компиляторов языка C и C++ для Linux и других Unix-подобных систем.
ccache | |
---|---|
| |
Тип | кэш компилятора |
Разработчик | Эндрю Триджелл |
Написана на | Си[1] |
Операционная система | Unix-like |
Аппаратная платформа | кроссплатформенное ПО |
Последняя версия | 3.7.1 (1 мая 2019) |
Лицензия | GNU GPL |
Сайт | ccache.dev |
Использование ссache может значительно ускорить сборку некоторых пакетов или проектов, которые компилируются несколько раз, так как заново компилироваться будут только файлы, которые изменились с последней компиляции.
Принцип работы
При компилировании какого-либо файла вычисляется его хеш и, если такой файл уже присутствует в реестре скомпилированных файлов, то он не будет компилироваться заново, а будет использоваться старый бинарный файл. Это может ускорить сборку некоторых пакетов в 5—10 раз.
При этом учитываются разные версии компилятора и опции сборки. Это означает, что, если вы однажды собрали проект с оптимизацией -О2, использовав при этом ссache, то при сборке с оптимизацией -О3 файл будет компилироваться заново, при этом в реестре ссache старый файл сохранится, но добавится и новый.
Неправильно скомпилированные файлы
Если какой-либо файл будет единожды скомпилирован неправильно, то при повторном компилировании без изменений параметров он не будет исправлен. Этого можно избежать, удалив файлы из кэша. Каталог, где хранится кэш по умолчанию — $homedir/.ccache/. Для очистки необходимо удалить все файлы, так как они сортированы по хешу из исходных файлов для более быстрого поиска и искомый файл невозможно отличить от других. Это можно сделать командой ccache -C.
Близкие проекты
сcache активно используется в Gentoo и других source-based дистрибутивах:
Для ускорения сборки пакетов также существует Distcc.