Я собираю некоторые программы здесь, и у меня есть 4 ядра. Есть ли способ сказать make, cmakeили gccскомпилировать, используя все ядра или что-то на это влияет?
Я собираю некоторые программы здесь, и у меня есть 4 ядра. Есть ли способ сказать make, cmakeили gccскомпилировать, используя все ядра или что-то на это влияет?
Ответы:
Если пакет поддерживает его, вы можете использовать -jфлаг, чтобы разрешить выполнение параллельных заданий, например:
make -j8
Более подробную информацию об этом флаге можно найти в вопросе Stackoverflow. Почему make -j работает лучше, если ему передается число, превышающее число доступных ядер? ,
Если у вас несколько машин, попробуйте distcc . На задействованных машинах sudo apt-get install distcc. Предполагая, что ваша сборочная машина 192.168.1.1:
на вспомогательных машинах запустите:
sudo distccd --log-file=/tmp/distccd.log --daemon -a 192.168.1.1
На сборочной машине перед запуском configureили cmakeвам нужно указать хосты, которые вы хотите использовать для процесса сборки. При желании укажите количество одновременных заданий после косой черты (по умолчанию 4):
export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8'
Заставьте компилятор использовать distcc:
export PATH="/usr/lib/distcc:$PATH"
Теперь configureили cmakeприложение и построить с:
make -j$(distcc -j)
Обратите внимание, что если вы /usr/lib/distccдважды вставите в PATH, он потерпит неудачу. Не забудьте установить /usr/lib/distccтолько один раз в вашем PATH.
Для получения дополнительной информации см. Справочные страницы для distcc (1) и distccd (1) .
distccd --user nobody. В противном случае он будет работать под пользователем, который его выполнил.