Оригинальный автор(ы) | Мартин Пул |
---|---|
Разработчик(и) | Фергус Хендерсон |
Стабильный релиз | 3.4 [1] / 11 мая 2021 г. ( 11 мая 2021 г. ) |
Репозиторий |
|
Написано в | С , С++ , Питон |
Операционная система | Кроссплатформенный |
Тип | Компилятор |
Лицензия | Стандартная общественная лицензия GNU |
Веб-сайт | distcc.github.io |
В разработке программного обеспечения distcc — это инструмент для ускорения компиляции исходного кода с помощью распределенных вычислений по компьютерной сети . При правильной настройке distcc может значительно сократить время компиляции проекта. [2]
Он разработан для работы с языком программирования C (и его производными, такими как C++ и Objective-C ) и использования GCC в качестве бэкэнда, хотя он обеспечивает различную степень совместимости с компилятором Intel C++ и Sun Studio Compiler Suite от Sun Microsystems . [3] Распространяясь на условиях GNU General Public License , distcc является свободным программным обеспечением .
distcc разработан для ускорения компиляции за счет использования неиспользуемой вычислительной мощности на других компьютерах. Машина с установленным distcc может отправлять код для компиляции по сети на компьютер, на котором установлен демон distccd и совместимый компилятор. [4]
distcc работает как агент для компилятора. Демон distcc должен быть запущен на каждой из участвующих машин. Исходная машина вызывает препроцессор для обработки заголовочных файлов, директив предварительной обработки (таких как #ifdef
) и исходных файлов и отправляет предварительно обработанный исходный код другим машинам по сети через TCP либо в незашифрованном виде, либо с использованием SSH . Удаленные машины компилируют эти исходные файлы без каких-либо локальных зависимостей (таких как библиотеки, заголовочные файлы или определения макросов) в объектные файлы и отправляют их обратно создателю для дальнейшей компиляции. [5]
distcc версии 3 поддерживает режим (называемый режимом pump ), в котором включенные заголовочные файлы отправляются на удаленные машины, так что предварительная обработка также распределяется.
distcc был опцией для распределенных сборок в версиях пакета разработки Apple Xcode до 4.3, но был удален.
Goma — аналогичный инструмент, созданный Google для замены distcc и ccache при компиляции Chromium.
ccache — еще один инструмент, предназначенный для сокращения времени компиляции путем кэширования выходных данных из тех же входных исходных файлов. ccache также может использовать distcc в качестве своего бэкэнда, обеспечивая распределенную компиляцию, если она еще не кэширована с помощью переменной среды CCACHE_PREFIX.
icecream был создан SUSE на основе distcc. Как и distcc, icecream берет задания компиляции из сборки и распределяет их между удаленными машинами, позволяя выполнять параллельную сборку. Но в отличие от distcc, icecream использует центральный сервер, который динамически планирует задания компиляции на самом быстром свободном сервере. [6]