资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
如果您的 C+项目非常庞大,含有 1000个.h文件, 2000 个.cpp文件,那么我敢打赌,每次编译所花的时间,都足够您喝3000 杯咖啡了。如何加快编译速度?Distcc是开源的用于搭建分布式编译环境的利器,它通过利用多台机器的资源,并行编译,来解决这个棘手的问题。然而,它的调度算法过于简单,不大合理,因此我们利用DMUCS 提供的调度功能,来搭建一个相对完美的分布式编译平台。本文,我们首先介绍如何(单独)使用 Distcc来加速编译,下一篇介绍如何组合使用Distcc+DMUCS 来做进一步的完善和优化。话不多说,我们的编译平台包括:开发机( Client):这一台机器上有我们的项目、工程文件、代码,平时我们在这台机器上写代码,要编译的对象也在这台机器上。机器IP 为 192.168.1.99服务器( Server):负责编译的机器,一共有3 台。IP 分别为192.168.1.11 ,192.168.1.22,192.168.1.33. 调度器( Scheduler ):调度程序所在的机器,负责把编译任务合理的派发到编译机器(服务器)的编译程序上。IP 为 192.168.1.88 。这台机器的部署和配置,我们留到下一篇博文介绍。以上所有机器都是安装的Ubuntu 14.04操作系统。服务器1,安装 gccsudo apt-get install gcc 2,安装 Distccsudo apt-get install distcc 安装后可以得到两个二进制文件,distccd和 distcc 。前者主要负责网络数据处理,后者可以认为是g+的前端,调用 g+进行编译。3,配置 Distcc打开/etc/default/distcc,设置如下配置项:STARTDISTCC=“true“ ALLOWEDNETS=“127.0.0.1 192.168.1.0/24“ LISTENER=“0.0.0.0“ 第一行设置开机就启动distccd第二行设置允许利用本机进行编译的开发机第三行设置监听的网络4,启动 distccdsudo service distcc start 经过以上配置,每次机器开机,都会自动运行distccd 。运行如下命令确认下:ps -aux | grep distccd 如果看到类似的输出,说明一切OK 了。distccd 3457 0.0 0.0 3260 144 ? SNs 23:33 0:00 /usr/bin/distccd -pid-file=/var/run/distccd.pid -log-file=/var/log/distccd.log -daemon -allow 127.0.0.1 -listen 0.0.0.0 -nice 10 distccd 3458 0.0 0.0 3260 144 ? SN 23:33 0:00 /usr/bin/distccd -pid-file=/var/run/distccd.pid -log-file=/var/log/distccd.log -daemon -allow 127.0.0.1 -listen 0.0.0.0 -nice 10 distccd 3461 0.0 0.0 3260 144 ? SN 23:33 0:00 /usr/bin/distccd -pid-file=/var/run/distccd.pid -log-file=/var/log/distccd.log -daemon -allow 127.0.0.1 -listen 0.0.0.0 -nice 10 开发机1,安装 Distcc当然啦,我们假设您的开发机上已经安装gcc了。2,设置编译资源这一步是指定哪些机器(也就是上面的Server)来负责编译工作。export DISTCC_HOSTS=“192.168.1.11 192.168.1.22 192.168.1.33“ 每台机器的 IP 之间用空格隔开。如果机器很多,那么这样填写可能不大方便,可以在/etc/distcc/hosts里添加。这两种方法可以任选一种,如果您两种都用,那么Distcc只认DISTCC_HOSTS 值。3,应用 Distcc应用 Distcc来编译代码有几种方法:方法一:修改 makefile中的CXX的值将 makefile文件中的这一行CXX = g+ 改为CXX = distcc g+ 然后运行make -j18即可。这里的 18,为所有服务器的CPU Cores的数量乘以 1.5。上面有 3 台服务器,每台有4 核,因此这里设置为18。为了获得最优值,很可能需要反复实验、测试。方法二:修改 configure文件如果您的 makefile文件由 automake产生,那么在运行./configure时得加上参数,变为:./configure -CXX=distcc g+ 那么生成的 makefile文件将自动使用 Distcc了。如果不出意外,编译速度已经大大提升了。然而,还有提高的空间,欲知详情,请看 下篇分解。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号