Компилировать программы на многоядерной или распределенной системе

Есть ли в Linux программное обеспечение, которое компилирует исходный код, содержащий большое количество файлов параллельно на многоядерных или распределенных системах. Библиотеки, такие как gcc или xserver, занимают очень много времени для компиляции на unicore/dual machine, и в большинстве случаев это расстраивает, когда вам нужно много перекомпиляции. Есть ли какой-либо метод для параллельного компиляции такого исходного кода?

Ответы

Ответ 1

В системах с распределенной памятью вы можете использовать distcc, чтобы скомпилировать задания на другие машины. Это требует немного настройки, но это может действительно ускорить вашу сборку, если у вас есть несколько дополнительных машин.

В многоядерных системах с общей памятью вы можете просто использовать make -j, который будет пытаться создавать задания сборки на основе зависимостей в вашем Makefiles. Вы можете работать следующим образом:

$ make -j

который не будет налагать никаких ограничений на количество созданных заданий или вы можете запустить с помощью целочисленного параметра:

$ make -j8

который ограничит количество заданий параллельной сборки. Здесь предел - 8 параллельных заданий. Обычно вы хотите, чтобы это было чем-то близким к количеству ядер в вашей системе.

Ответ 2

ccache также может использоваться для ускорения процесса компиляции