Chinaunix首页 | 论坛 | 博客
  • 博客访问: 970629
  • 博文数量: 99
  • 博客积分: 3306
  • 博客等级: 中校
  • 技术积分: 1238
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-21 10:14
文章分类

全部博文(99)

文章存档

2012年(37)

2011年(56)

2010年(6)

分类: C/C++

2012-05-19 12:24:35

distcc是一个分布式的编译工具,包含distccd和distcc。其中distccd是服务端,需要安装在远程协助编译的多台服务器上,而distcc是一个客户端,需要安装在分发编译任务的服务器上。centos可以直接在 上下载2个RPM包:
distcc-2.18.3-2.el5.rf.x86_64.rpm
distcc-server-2.18.3-2.el5.rf.x86_64.rpm

test[1-5].inner.net是我的5台服务器,直接在5台服务器上都安装这2个包,然后同步一下5台服务器的配置文件

  1. # cat /etc/sysconfig/distccd
  2. ### See distcc(1) manual page for more information on these options.
  3. ###
  4. OPTIONS="--nice 5 --jobs 10 --port 3632 --allow 127.0.0.1 --allow 10.0.0.0/8 "
  5. #USER="distcc"
  6. ### Set this if don't want distccd to use gcc or g++ by accident.
  7. #DISTCCPATH="/usr/lib/distcc/bin"
红色部分是需要注意的,distcc默认使用的端口是3632,而distccd默认的端口是1234,这个搞得我查了很久才找到原因。

修改配置后对于每个服务器 

  1. chkconfig --level 2345 distccd on
  2. service distccd restart

然后就可以使用了,以编译nginx为例


  1. export CC=distcc; ./configure
  2. export DISTCC_HOSTS="test1.inner.net .... test5.inner.net"
  3. make -j 20
这样就会向每台服务器分发出任务。
预处理工作其实还是在分发任务的机器上执行的,然后把预处理后的代码传输到远程服务器,编译成.o文件,再取回来链接生成可执行程序。

编译的时候参与编译的服务器上可以看到日志 tail /var/log/distccd.log
分发编译任务的机器上可以使用 distccmon-text 1查看编译任务的分发

阅读(9411) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~