distcc是一个开源的分布式C/C++、Object C/C++编译器前端,用于将(Object)C/C++的编译任务分发到其它安装有distcc的主机上进行编译,进而实现提高编译速度的效果,根据官网描述,在三台主机组成的分布式编译环境下,编译速度可提高2.6倍。更多信息可参考distcc官网:https://distcc.github.io
以ubuntu16.04为例,在每一台需要参与分布式编译的ubuntu服务器上执行步骤2
和3
wget https://github.com/distcc/distcc/releases/download/v3.3.3/distcc-3.3.3.tar.gz
tar -zxvf distcc-3.3.3.tar.gz
gcc make python3 python3-dev libiberty-dev
python3-dev
为例:sudo apt-get update
sudo apt-get install python3-dev
time.clock
为time.perf_counter()
,二是通过sudo apt-get install python3=[version]
在安装python3时指定python3版本,具体版本号可以到https://packages.ubuntu.com/sv/中查询。cd distcc-3.3.3
./configure
make
sudo make install
distcc只是一个前端,负责将任务分发给其它主机,那么提供编译服务的主机上就需要开启一个守护进程监听并处理收到的编译任务,这就是distccd守护进程。
/etc/profile
中追加export DISTCC_HOSTS="localhost host1 host2 hostn"
export PATH="/usr/lib/distcc:$PATH"
~/.bashrc
中而不是/etc/profile
中localhost
直接就写localhost
,如不写localhost会导致本机不参与编译,所有编译任务都由其它主机完成;/etc/rc.local
中追加distccd --daemon --user nobody -a [network]/[mask]
network
即所有distcc主机所在的网络,mask及对应的子网掩码,如果想让任意主机都可以使用当前主机的distcc服务,那么可以配置成0.0.0.0/0
,但是这么做会存在一定的安全隐患,一般而言都是配置成特定子网及其掩码,例如:192.168.0.0/24
,这样只允许子网中的主机使用当前主机的distcc服务进行分布式编译。sudo distcc --daemon --user nobody -a [network]/[mask]
distcc --daemon -a [network]/[mask]
到需要编译的项目中,将make命令改为make -j32 CC=distcc
进行编译。