使用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 用于通过网络编译源代码。链接步骤可能不是并行的。
阅读(1710) | 评论(0) | 转发(0) |