LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: doyend

搞定distcc,可是网速太慢

[复制链接]
发表于 2006-7-2 10:52:09 | 显示全部楼层
Post by gzxiaobai
请教,两部机器的架构(arch)相同吗?
我的机器一部是 athlon-xp 另外一部是 k6-2,正想试验 distcc。
据 distcc 档,architecture 不重要,gcc 的版本才重要,如幻想老大所言,大版本要相同,也就是 gcc-x.y.z 中,各机器上 gcc-x.y 要相同,z 不要紧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-2 11:11:23 | 显示全部楼层
我的gcc都是3.4.x的。 这里有DistCC Cross-compiling guild http://www.gentoo.org/doc/en/cross-compiling-distcc.xml里面好像说architecture很有关系阿。连i586,i686都要区分。

If you are cross-compiling between different subarchitectures for Intel x86 (e.g. i586 and i686), you must still build a full cross-toolchain for the desired CHOST, or else the compilation will fail. This is because i586 and i686 are actually different CHOSTs, despite the fact that they are both considered "x86." Please keep this in mind when you build your cross-toolchains. For example, if the target box is i586, this means that you must build i586 cross-toolchains on your i686 helper boxes.
回复 支持 反对

使用道具 举报

发表于 2006-7-2 13:16:55 | 显示全部楼层
试了一下,可以编译了。写一下给大家参考,其中有一些小问题,请指点。

我用两台局域网里的机器,一台是 athlon-xp 另外一台是 k6-2
现在的试验是 athlon-xp 帮 k6-2 编译,k6-2 本机不参加编译。
我的步骤:
1。athlon 用 crossdev 造一个 i586-pc-linux-gnu 的工具链。
期间有一个问题,就是hardened的gcc不成功,gcc-config 了 vanilla 后才行
2。两台机器上装 distcc
3。athlon 上启动 distccd 服务
有一个小问题,配置里用 listen 选项时不能启动服务,只能用 allow 选项
4。k6-2机器上,/etc/make.conf 里往 FEATURES 里加入 distcc,并且用distcc-config --sethost "192.168.0.100"来设置参加编译的IP,我没加localhost,因为k6-2太慢
5。根据gentoo帮助文件,在k6-2的/usr/lib/distcc/bin里,删除了cc,c++,gcc,g++,然后做一个可运行的 i586-pc-linux-gnu-wrapper,其内容为:
#!/bin/bash
exec /usr/lib/distcc/bin/sparc-unknown-linux-gnu-g${0[-2]} "$@"
然后再做 cc,c++,gcc,g++这四个连接到 wrapper,目的是当 portage 运行cc,则distcc
运行 i586-pc-linux-gnu-gcc,因为在编译的机器上,cc 是为本机编译的,要用 i586...全称才不会混淆。
6。k6-2机器上运行:
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin{PATH}"
这样现使用distcc下的gcc,g++等命令
现在,可以编译了。

剩下的问题,k6-2上运行 distccmon-text 看不到任何东西。
但是,当我在athlon上关闭distcc服务,k6-2上的编译就报错,所以,distcc应该是工作的,而且编译了一次内核,时间缩短了很多。
我参考了gentoo的这个帮助文档:
http://www.gentoo.org/doc/en/cross-compiling-distcc.xml
回复 支持 反对

使用道具 举报

发表于 2006-7-5 11:49:32 | 显示全部楼层
gentoo的distcc的中文文档已经写的很详细,照着做是肯定可以搞定。
混合版本gcc的使用文档中有重要说明,所以稳妥起见还是用完全相同的版本,在我的经验中完全相同的版本使用没有任何问题。
至于监视其它机器是否参与了编译,在配置正确的前提下最简单的办法就是用top监视每台机器是否有distcc和cc的进程以及它们的cpu占用率。
速度的问题用adsl还是不妥,100M的以太网更合适,以我的经验5M以下源代码的编译有2~3台赛扬1g的机器都可以了,如果是P4 2G以上的机器单机更快,10台机器参与的编译对于kde之类的大型程序才有优势,添加更多的机器对于100M的网络和发布代码的源机性能都是一个考验,有时反而更慢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表