Есть ли любое программное обеспечение, доступное в Linux, который компилирует исходный код, содержащий большое количество файлов parallely или в многоядерных или в распределенных системах. Библиотеки как gcc или xserver занимают очень время для компиляции на unicore/dual машине и большинство времен, печально при необходимости в партии перекомпиляции. Есть ли какая-либо техника для компиляции такого исходного кода parallely?
В системах распределенной памяти можно использовать distcc для компиляции заданий на других машинах. Это займёт некоторое время настройки, но может действительно ускорить сборку, если у вас есть дополнительные машины.
На многоядерных системах с распределённой памятью вы можете просто использовать make -j
, который попытается породить сборочные задания, основанные на зависимостях в ваших makefiles. Вы можете запустить так:
$ make -j
, что не будет ограничивать количество порождаемых вакансий, или вы можете запустить с целочисленным параметром:
$ make -j8
, который ограничит количество одновременно создаваемых сборочных вакансий. Здесь ограничение составляет 8 параллельных заданий. Обычно вы хотите, чтобы это было что-то близкое к количеству ядер в вашей системе.
.GNU make (стандартная марка, устанавливаемая на системы Linux) поддерживает параллельное выполнение команд - взгляните на http://www.gnu.org/software/make/manual/make.html#Parallel
кэш можно использовать и для ускорения процесса компиляции
.