|
我喜欢做LFS,而机器又很烂,于是就希望能加速编译.而distcc以及 相关工具是个不错的选择。虽然自己只有一台机器,但是可以用别人的来"帮个忙"
译者:linuxsir不开花
E-mail:yixiu0001@gmail.com
文章内容很长,无法全文贴出来,全文在附件
前言
这里介绍了distcc和ccache,dmucs,ccontrol,crosstool等几个相关的项目,主要是其项目主页内容的翻译,我的英语奇烂,翻译的不准确还请见谅。
Distcc:一个快速,自由的分布式C/C++编译器
对我来说,速度提供了真实的现代感。
--Aldous Huxley
Distcc是个通过网络上的若干台机器用来分布式编译C,C++,目标C或目标C++代码的程序。distcc应该总是产生如同本地编译一样的输出,它很容易安装和使用,并且通常比本地编译要快很多。
distcc不要求所有的机器共享文件系统,有同步的始终,或者安装有同样的库和头文件。当安装了交叉编译器,它们甚至可以使用不同的处理器和操作系统。
正想写信告诉你我们在计算工作中正在使用distcc,它很棒。我们有一个机架的至强机 器,用于我们的工作,把它们作为编译场来编译我们的~1MLOC C++树(当我们更改某些头文件, 在一个单CPU的机器重新编译时上要花费若干小时)。我们尝试过使用SUN的网格引擎来做这 (我们已经使用它来调度计算任务),但是
一分钟快速指南:
1.对于每个机器,下载distcc,解压,运行如下命令
./configure && make && sudo make install
注:configure时可选--with-gtk
2.在每个服务端,运行distccd –daemon ,使用 --allow选项限制访问。
3.把服务端的名字放进你的环境:
export DISTCC_HOSTS='localhost red green blue'
4.编译!
cd ~/work/myproject; make -j8 CC=distcc
distcc在GNU/Linux上开发,但是已经被移植到别的系统,包括 FreeBSD,NetBSD,Darwin,Solaris,HP-UX,IRIX,Cygwin和BSD/OS。 对于每个任务,distcc发送预处理完的源代码到网络上,网络内每个运行distccd守护程序的 机器安装了合适的编译器(最好是相同版本的编译器)。
distcc本身并不是一个编译器,而是个GNU C/C++ 编译器(gcc)的前端。(有准备支持别的编 译器,但主要专注于gcc),几乎所有gcc选项和特性工作的如同平时一样。
Distcc被设计成使用-j 选项并行编译,使用GNU make或SCons,或是别的编译工具。文件频 繁的通过网络需要花费一些时间,但在客户机上只需要很少几个周期。对于客户CPU,所有的文 件都可以在远程“免费”编译是很有用的。
distcc的开发始于2002年。它可靠和成功的编译大型的,复杂的和重量级的软件系统。所知的 使用distcc正确编译的软件包括Linux内核,rsync,KDE,GNOME(通过GARNOME),Samba和 Ethereal。
对于少量的机器,distcc接近于新型扩展:在单个奔腾IV@1.7G的机器上编译Linux 2.4.19
使用distcc 0.15花了6分钟45妙。通过一个100M的交换器,使用三台这样的机器花了2分 钟30秒:快了2.6倍。理论上(还没达到)最大速度是3倍,所以在这种情况下distcc的扩展 效率是89%。
你并不需要很多可用的机器:一个笔记本和一个台式机肯定要比笔记本自己要快。
这里有一些单独可用的工具,可以增强或支持ditcc:
ccache 缓存编译输出来加速编译。
Dmucs帮助distcc选择合适的服务端。
Ccontrol 并行的中央控制,缓冲和分配,甚至在编译时也可以。
Crosstool自动构建交叉编译工具链。
DistccWebView 是个显示你的哪个服务端在运行和编译的CGI。
Tcpbalance 是个和distcc一起工作的很好的,使用Erlang写的负载平衡TCP代理。
............................
全文在附件 |
|