ccache (ccache)

Перейти к навигации Перейти к поиску

ccache
Скриншот программы ccache
ccache 3.1.6 в среде Gentoo Linux
Тип кэш компилятора
Разработчик Эндрю Триджелл
Написана на Си[1]
Операционная система Unix-like
Аппаратная платформа кроссплатформенное ПО
Последняя версия 4.10.1 (30 июня 2024)
Репозиторий github.com/ccache/ccache
Лицензия GNU GPL
Сайт ccache.dev

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

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

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

[править | править код]

При компилировании какого-либо файла вычисляется его хеш и, если такой файл уже присутствует в реестре скомпилированных файлов, то он не будет компилироваться заново, а будет использоваться старый бинарный файл. Это может ускорить сборку некоторых пакетов в 5—10 раз.

При этом учитываются разные версии компилятора и опции сборки. Это означает, что, если вы однажды собрали проект с оптимизацией -О2, использовав при этом ссache, то при сборке с оптимизацией -О3 файл будет компилироваться заново, при этом в реестре ссache старый файл сохранится, но добавится и новый.

Неправильно скомпилированные файлы

[править | править код]

Если какой-либо файл будет единожды скомпилирован неправильно, то при повторном компилировании без изменений параметров он не будет исправлен. Этого можно избежать, удалив файлы из кэша. Каталог, где хранится кэш по умолчанию — $homedir/.ccache/. Для очистки необходимо удалить все файлы, так как они сортированы по хешу из исходных файлов для более быстрого поиска и искомый файл невозможно отличить от других. Это можно сделать командой ccache -C.

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

[править | править код]

сcache активно используется в Gentoo и других source-based дистрибутивах:

Для ускорения сборки пакетов также существует Distcc.

Примечания

[править | править код]