编译多核或分布式系统上的程序

在linux中是否有任何软件可以在多核或分布式系统上并行编译包含大量文件的源代码。 像gcc或xserver这样的库需要花费很长时间才能在unicore / dual机器上进行编译,而且大多数情况下,当你需要大量的重新编译时,这是令人沮丧的。 有没有什么技术可以并行编译这样的源代码?

在分布式内存系统上,可以使用distcc将编译作业排除到其他机器上。 这需要一些设置,但如果你碰巧有一些额外的机器,它可以真正加快你的构建。

在共享内存多核系统上,您可以使用make -j ,它会尝试根据makefile中的依赖关系生成构建作业。 你可以像这样运行:

 $ make -j 

这将不会限制产生的作业数量,也可以使用整数参数运行:

 $ make -j8 

这将限制并发构建作业的数量。 在这里,限制是8个并发作业。 通常,您希望这个值接近系统上的核心数量。

ccache也可以用来加快编译过程

GNU make(在Linux系统上安装的标准make)支持并行命令执行 – 查看http://www.gnu.org/software/make/manual/make.html#Parallel