distcc
Оригинальный автор(ы) | Мартин Пул |
---|---|
Разработчик(и) | Фергюс Хендерсон |
Стабильная версия | 3.4 [1] / 11 мая 2021 г |
Репозиторий | |
Написано в | С , С++ , Питон |
Операционная система | Кросс-платформенный |
Тип | Компилятор |
Лицензия | Стандартная общественная лицензия GNU |
Веб-сайт | distcc |
В разработке программного обеспечения distcc — это инструмент для ускорения компиляции исходного кода с помощью распределенных вычислений по компьютерной сети . При правильной настройке distcc может значительно сократить время компиляции проекта. [2]
Он предназначен для работы с языком программирования C (и его производными, такими как C++ и Objective-C ) и для использования GCC в качестве серверной части, хотя он обеспечивает различную степень совместимости с компилятором Intel C++ и Sun Microsystems от Sun Studio Compiler Suite . [3] распространяется на условиях GNU General Public License Distcc и является свободным программным обеспечением .
Дизайн
[ редактировать ]distcc предназначен для ускорения компиляции за счет использования неиспользуемой вычислительной мощности на других компьютерах. Машина с установленным distcc может отправлять код для компиляции по сети на компьютер, на котором установлен демон distccd и совместимый компилятор. [4]
distcc работает как агент компилятора. Демон distcc должен быть запущен на каждой из участвующих машин. Исходная машина вызывает препроцессор для обработки файлов заголовков, директив предварительной обработки (например, #ifdef
) и исходные файлы и отправляет предварительно обработанный исходный код на другие машины по сети через TCP либо в незашифрованном виде, либо с использованием SSH . Удаленные машины компилируют эти исходные файлы без каких-либо локальных зависимостей (таких как библиотеки, файлы заголовков или определения макросов) в объектные файлы и отправляют их обратно создателю для дальнейшей компиляции. [5]
distcc версии 3 поддерживает режим (называемый режимом насоса ), в котором включенные файлы заголовков отправляются на удаленные машины.так что предварительная обработка также распределена.
Сопутствующее программное обеспечение
[ редактировать ]distcc был опцией для распределенных сборок в версиях пакета разработки Apple Xcode до 4.3, но был удален.
Десять
[ редактировать ]Goma — аналогичный инструмент, созданный Google для замены distcc и ccache при компиляции Chromium.
Кэш
[ редактировать ]ccache — еще один инструмент, призванный сократить время компиляции за счет кэширования вывода из тех же входных исходных файлов. ccache также может использовать distcc в качестве своей серверной части, обеспечивая распределенную компиляцию, если она еще не кэширована с помощью переменной среды CCACHE_PREFIX.
Мороженое
[ редактировать ]мороженое было создано SUSE на основе distcc. Как и distcc, Icecream берет задания компиляции из сборки и распределяет их между удаленными компьютерами, обеспечивая параллельную сборку. Но в отличие от distcc, Icecream использует центральный сервер, который динамически распределяет задания компиляции на самый быстрый свободный сервер. [6]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуск 3.4» . 11 мая 2021 г. Проверено 21 мая 2021 г.
- ^ Лоуренс Бонни (22 июля 2004 г.). «Уменьшите время компиляции с помощью distcc» . ИБМ . Проверено 24 августа 2011 г.
- ^ Мартин Пул (23 февраля 2007 г.). «distcc часто задаваемые вопросы» . Distcc.googlecode.com. Архивировано из оригинала 7 сентября 2009 г. Проверено 19 октября 2009 г.
- ^ Дэниел Роббинс (1 февраля 2004 г.). «Распределенные вычисления и распределенные вычисления» . Доктор Добб . Проверено 24 августа 2011 г.
- ^ В.Л. Симпсон (октябрь 2004 г.). «Быстрая компиляция с помощью Distcc» . linuxgazette.net . Проверено 25 августа 2011 г.
- ^ Icecream: Распределенный компилятор с центральным планировщиком для разделения загрузки сборки , Icecc, 27 декабря 2017 г. , получено 27 декабря 2017 г.