+ -
当前位置:首页 → 问答吧 → 分布式编译工具distcc以及相关项目介绍

分布式编译工具distcc以及相关项目介绍

时间:2008-03-28

来源:互联网

我喜欢做LFS,而机器又很烂,于是就希望能加速编译.而distcc以及 相关工具是个不错的选择。虽然自己只有一台机器,但是可以用别人的来"帮个忙"
译者:linuxsir不开花

E-mail:[email protected]
文章内容很长,无法全文贴出来,全文在附件
前言

这里介绍了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**。

............................
全文在附件

作者: 不开花   发布时间: 2008-03-28

沙发,好帖!!
支持 ~

作者: tfkdmwmqtr   发布时间: 2008-03-28

狂晕,这是个什么东东啊!

作者: foo2008   发布时间: 2008-03-28

可是,我到哪里去找能帮我编译的电脑呢?

作者: kangtian   发布时间: 2008-03-28

引用:
作者: kangtian
可是,我到哪里去找能帮我编译的电脑呢?
估计可以互助吧,让坛子里用这个东东的都一样配置,互相帮忙吧!

作者: foo2008   发布时间: 2008-03-28

上海有一台计算能力排在世界前50名的超级计算机(好像叫曙光,其实是AMD的技术),不知能不能让曙光帮帮忙!

作者: kangtian   发布时间: 2008-03-28

花兄可以将附件 split 开,然後用 gz 打包发上来吧

作者: d00m3d   发布时间: 2008-03-29

今天用2台机器编译gentoo的内核,-jN选不同值时编译出来的vmlinux不一样,大小有一点差别,cmp -l 看也有区别。
一台机器cent0S5.1 gcc4.1.2-14 binutils2.17.50.0.6
另一台gentoo2007 gcc.4.1.1-r binutils2.16??

准备把gentoo的gcc升到4.1.2, binutils升到2.18, centos的bintil升到2.18再试试

作者: seismo   发布时间: 2008-04-02