我在这里编译一些程序,我有 4 个核心。有没有办法告诉make
或使用所有核心进行编译cmake
或gcc
影响什么?
答案1
如果包支持,您可以使用标志-j
来允许并行作业运行,例如:
make -j8
有关此标志的更多详细信息,请参阅 Stackoverflow 问题为什么当传递的数字大于可用核心数时,make -j 的性能会更好?。
分布式编译
如果你有多台机器,分布式开始吧。在所涉及的机器上,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)。