Я собираю некоторые программы здесь, и у меня есть 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
. В противном случае он будет работать под пользователем, который его выполнил.