Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1556355
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2012-03-11 14:10:07


使用distcc加速编译程序

distcc使用方法
软件包:(可去Debain软件中心或是(distcc项目主页)下载)
distcc-2.18.3.tar.gz
安装distcc-2.18.3.tar.gz
./configure --with-gtk  //安装带图形的监视器,不选也可,具体看 ./configure --help
make
sudo make install
配制distcc
vim ~/.bashrc
下面是普通用户的配制
export PATH=$PATH:/usr/local/bin   //因为默认是安装到这里,根据自己的情况而定
export DISTCC_HOSTS=”localhost 192.168.1.35 192.168.1.16”
localhost:这里指自己的机器,后面的IP为要参加编译的机器,每一个IP之间以空格隔开,并且写在前面的先获取任务来运行,先来先得,如果本机任务比较重则去除localhost,让本机只负责管理即可

export DISTCC_VERBOSE=1 //给出调试信息

export DISTCC_LOG=”/var/log/disstcc.log”  //这是存放错误信息的地方,可以自己更改位置
这两项是用来编译产生错误时的在指定位置记录日志,也可不要,要的话需要增加如入步骤
sudo touch /var/log/disstcc.log
sudo chmod 766 /var/log/disstcc.log

distccd --daemon --allow 192.168.0.0/16   //这里指的是192.168.开头网段都可以接收

这句话第一台参加编译的机器都要添加

root用户的配制如下

export DISTCC_HOSTS=”localhost 192.168.1.35 192.168.1.16”
distccd --daemon  --user nobody --allow 192.168.0.0/16  
//如果不加--user nobody则会提示:distccd[4596] (dcc_preferred_user) Warning: no such user as "distcc"

保存退出之后关闭当前shell窗口重新打开或者运行 . ~/.bashrc (注意. 与 ~/.bashrc之间有空隔),使刚设的环境变量生效

重启电脑
使用distcc
源码包编译:
CC=distcc ./configure
make -j4 //数字4是分配的任务个数,具体可根据你的机器的CPU核心总个数加1,或是乘以2或3也可以
-j:指定可以在本节点上运行的最大任务数
交叉编译
make -j4 CC=”distcc mipsel-linux-gcc”

运行:distccmon-gnome //可查看每台机器的编译状况 ,为图形模式监视器

进度指示条颜色的意义分别为:绿色:compiling(编译);紫色:preprocessing(预处理) ;蓝色:receiving(接收) ;橙色:connecting ;白色:idle(空闲)
运行:distccmon-text 2 或 watch distccmon //可查看每台机器的编译状况 ,为文本模式,数字2是表示每2秒刷新一次也可以改变1或是别的数字
运行状况eg:
11204 Complie xwin.c      192.168.1.25[0]
11206 Complie xkeymap.c   192.168.1.25[1]
11200 Complie rdesktop.c  localhost[0]
11202 Complie ewmhints.c  localhost[1]

实测记录:

linux_soc3210(内核)编译:
make -j12 CC=distcc  (包本机共三台龙芯2F电脑环境设置为:export DISTCC_HOSTS="192.168.1.16 192.168.35 localhost")
time:15:44—16:01
make (单机运行)
time:16:02—16:43

使用 distcc 需要记住的几个关键点

要使 distcc 为您工作,必须记住以下几件事情:
        几台机器必须具有一致的配置。这意味着所有机器上必须安装相同版本的 g++ 编译器,以及相关的编译工具,如 ar、ranlib、libtool 等。操作系统的类型和版本也应该相同。
        在客户端机器上,distcc 将预处理代码发送给服务器机器。您需要验证 distccd 守护进程正在服务器机器上运行。
        默认情况下,distcc 在单台机器上调度的作业数是 CPU 的个数 + 2。对于单核机器,这个数是 3。在触发进程时请记住这一点:像 make –j10 CC=distcc 这样的命令行(其中只有三个主机)意味着最初触发 9 个编译作业。
        保证底层机器可以访问存储源文件的必备文件系统。在基于网络文件系统(Network File System,NFS)的系统中,一些源区域不能被挂载,这将导致编译失败。同时还要仔细监视网络堵塞。
        distcc 用于通过网络编译源代码。链接步骤可能不是并行的。
阅读(1705) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~