c分布式编译环境搭建
Distcc介绍
1.1Distcc本地可以配置成为server端或者user端。
1.2Server端生成distccd进程,并在3632端口监听任务。
1.3User端使用命令行,在执行make的时候,带入参数CC=distcc,根据服务器数量的多少,-j的数量一般可以将服务器数量*4。
1.4Distcc本地要指向使用的gcc / ar / ld等工具,服务器的编译工具必须是工程要使用的版本。
1.5User要执行预处理,这样在编译服务器上不需要同样一套代码,这样在部署上比共享文件夹类型的分布式编译系统简单很多。
Distcc安装配置
2.1 Server端安装可以使用:sudo apt install distcc
2.2 User端安装可以使用:sudo apt install distcc distccmon-gnome distcc-pump
2.3 Server和User端配置:
默认安装后distcc要配置在本地的PATH中,将/usr/lib/distcc加入即可:
默认配置的distcc指向的是本地的gcc,在嵌入式方向要修改编译器时,需要新建链接:
cd /usr/lib/distcc
sudo ln –s …/…/bin/distcc arm-eabi-gcc
sudo ln –s …/…/bin/distcc arm-eabi-g++
2.3 Server端配置:
STARTDISTCC="true"
# 下面的 /16表示前面的IP地址16位有效,即192.168.xx.xx的用户发过来的请求都接受
ALLOWEDNETS="127.0.0.1 192.168.0.0/16"
LISTENER=""
NICE="10"
JOBS=""
ZEROCONF="true"
2.4 User端检查当前可用服务器
distcc --show-hosts
2.5 在User端增加配置
[A-IP]:3632/32,cpp,lzo
[C-IP]:3632/16,cpp,lzo
[B-IP]:3632/8,cpp,lzo
演示和测试
3.1 将配置好的n台PC打开
3.2 User打开监控:distccmon-gnome
3.3 进入某个编译目录,使用make直接编译,观察监控
3.4 清空编译结果,使用make -j16编译,观察监控
3.5 清空编译结果,使用make -j16 CC = distcc编译,观察监控
【结论】使用distcc将编译任务会发送到编译服务器上,经过分布式编译利用多台机器的协作提升效率。
自动化部署(待开发和验证)
Distcc的安装和配置比较复杂,当添加多台服务器时,重复配置耗费大量人力,当配置出错时更是需要浪费时间定位,需要开发一部分脚本方便IT部门操作。
4.1 安装配置说明书,文本文件即可。
4.2 服务器配置脚本,使用setDistccEnvServer.sh xxxPATH即可将本机设置为server。
4.3 用户端配置脚本,使用updateDistccEnvServer.sh,即可将当前可用的server自动更新,在user上使用。