如何加快Ubuntu应用程序的编译速度(make,cmake,gcc)

我正在编译一些程序,我有4个核心。 有没有办法告诉makecmakegcc使用所有内核或其他东西进行编译?

如果包支持它,您可以使用-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 
  • 在构建计算机上,在运行configurecmake之前,必须指定要用于构建过程的主机。 (可选)指定斜杠后的并发作业数(默认为4):

     export DISTCC_HOSTS='localhost/4 192.168.1.2/8 192.168.1.3/8' 

    使编译器使用distcc:

     export PATH="/usr/lib/distcc:$PATH" 

    现在configurecmake应用程序并构建:

     make -j$(distcc -j) 

    请注意,如果您在PATH中放置了两次/usr/lib/distcc ,它将会失败。 一定要在PATH设置一次/usr/lib/distcc

有关详细信息,请参阅distcc(1)和distccd(1)的手册页。