跳转至

分布式编译

实际开发中,会有巨型的 C/C++ 项目,例如 Linux、PyTorch、Chromium 等,这些项目的代码数量数以万计,在个人电脑上编译可能需要动辄几个小时,哪怕是在服务器上编译,可能耗费的时间也要数十分钟。即使有编译缓存,但是我们有时候修改一个头文件可能也会导致数百上千的文件需要重新编译。对于这种巨型项目,我们可以使用多台机器一起编译,进一步加速编译过程。

分布式编译的原理就是将任务切分开,将预处理后的源代码发送到其他机器上,让不同的机器去并行编译程序的不同部分,从而提高并行度。最后,我们只需要将编译产物下载回来进行链接即可。

在多人合作开发时,分布式编译还可以利用编译缓存,这样只需要一个人执行过一次编译,其他人就能直接使用服务器提供的缓存,大大加速构建过程。

使用 distcc 进行分布式编译

目前,C/C++ 常用的分布式编译工具是 distcc

使用 distcc 和 ccache 搭建分布式编译缓存

distcc 还可以和前面提到的 ccache 一起使用,进一步加快构建流程。只需要将 distcc 调用的编译器替换为 ccache 提供的包装器即可。


最后更新: 2021-07-29 22:44:18
本页作者: Howard Lau