Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305779
  • 博文数量: 75
  • 博客积分: 2710
  • 博客等级: 少校
  • 技术积分: 706
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 14:19
文章分类

全部博文(75)

文章存档

2011年(10)

2010年(22)

2009年(43)

我的朋友

分类:

2009-12-22 12:35:56

    一般情况下编译linux内核、qt或其他大型软件项目是非常耗费时间的,对于使用GNU C编译器编译的程序,可以使用简单的几个小软件大大缩短您的编译时间。
 
ccache:编译中间结果缓存程序,安装在需要编译程序的机器上,对于centos,可使用yum install ccache命令安装,然后修改可缓存文件数和文件大小。
 
distcc:分布式编译程序,将C编译器的任务通过网络分配给其他电脑,进行协同编译。
 
(以上两个软件可以合用,软件自身能保证编译结果与未使用这两个工具时一致,但必须保证客户机与服务器C编译器版本一致,否则会由于编译器差异产生奇怪的错误。)
 
distcc的安装:
yum install distcc
yum install distcc-server(服务器上需要安装)
 
配合使用的设置:
服务器:distccd --daemon --allow=客户机ip --listen=服务器自身ip
客户机:
修改~/.distcc/hosts文件添加内容为所有参与本次分布式编译的机器名称或ip(如:localhost 192.168.0.10 192.168.0.20)以空格分开;
设置环境变量CCACHE_PREFIX为distcc;
对于交叉编译, 需要添加软链接,如ln -s /usr/local/arm/2.95.3/bin/arm-linux-gcc arm-linux-gcc,这样程序中执行arm-linux-gcc即相当于distcc ccache arm-linux-gcc
 
distcc的缺点:任务分配机制太简单,像我测试时只用了两台电脑,localhost在前时所有的任务都被分配给了localhost,在后时所有任务都分给了另一台机器。
 
解决方法:dmucs
服务器和客户机均需要安装,但只在其中任一台运行即可。
yum install dmucs
服务器端执行:
修改/usr/local/share/dmucs/hosts-info,例:
# 格式:机器ip cpu核心数 优先级(实际是可分配的任务数,根据实际性能填写)
192.168.0.10 1 4
192.168.0.103 1 2
。。。。。。。
dmucs &(监控程序,只在其中一个服务器运行)
loadavg -s 服务器ip &(发送本机负荷的程序)
客户端执行:
loadavg -s 服务器ip &(发送本机负荷的程序)
 
make -jN(N为任务数,可设为所有参与编译电脑的cpu核心数目的2-3倍)
可以在编译的本机上运行distccmon-text 1(文本模式,参数为刷新时间,单位为s)
或distccmon-gnome(需要使用源码编译,指定--with-gnone参数)监控编译过程中各主机的情况。
 
更多资料请自行查阅:
阅读(7371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~