|
发表于 2009-12-12 20:43:59
|
显示全部楼层
Post by hujy;2055234
我的配置
笔记本 T2390 gentoo i686
台式 VIA C3 gentoo i585
看了手册http://www.gentoo.org/doc/zh_cn/distcc.xml?style=printable,对distcc交叉编译只是简单一提。
在两台机子上已经完成的设置:
编辑make.conf
在FEATURES 添加 "distcc"
添加DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc
MAKEOPTS=-j4
运行/etc/init.d/distccd start
另外:对手册中这句“注意: 你应当取消 PORTAGE_TMPDIR 行注释。”不理解,在make.conf中没有PORTAGE_TMPDIR这行。
问题:
1怎样才能实现distcc交叉编译
2用无线路由器上网,台式机有线连接,笔记本54M无线网卡连接速度差些对distcc影响是否会很大
3不同发行版在设置distcc上有何差异,家里还有 Althon3000+ arch x86_64和Loongson2e debian squeeze mips o32也想加入distcc
假设你有两台gentoo机器, 姑且称为A, B, A启用distcc, B安装但不启用
1. A,B都安装distcc
emerge distcc
2. 配置A的/etc/make.conf
方法和你所说的一样,
PORTAGE_TMPDIR默认的值应该是/var/tmp
通过emerge --info | grep TMPDIR 检查下,
如果没有结果的话, 你自己手动在/etc/make.conf添加如下
PORTAGE_TMPDIR=”/var/tmp“
注意: 添加的内容必须在DISTCC_DIR之前
3. A,B同时配置/etc/conf.d/distccd里面DISTCCD_OPTS的allow, listen选项
示例如下
DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.2.0/24"
DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.2.135"
allow:哪些网段的机器可以参与本机的distcc
listen: 本地机器的ip地址
注意A,B的listen是不同的
4. A配置/etc/env.d/02distcc, 添加DISTCC_HOSTS
DISTCC_HOSTS="192.168.2.120 192.168.2.140 192.168.2.135 192.168.2.150"
告诉A需要象哪些机器去发送distcc的请求
里面的ip地址的排列顺序和优先级是成正比的, 一般本机是第一位, 网络连接比较慢的,速度不快的机器放在后面。 连接速度的差异是会导致distcc不能完全发挥效率的,但是从你的情况来看54M的无线网卡, 一般是支持80211g的, 问题不会太大。
5 确保A,B的path中包含/usr/lib/distcc/bin
(可选)如果启用ccache确保PATH中的/usr/lib/ccache/bin在usr/lib/distcc/bin之前。
6 更新环境
env-update && source /etc/profile
7 重启distccd
/etc/init.d/distccd restart
8 在A, B机器行都运行 netstat -ap | grep distcc
如果都能看到结果, 恭喜你已经顺利完成设置工作, 可以开始emerge了
9 其他的linux的机器也是可以安装distcc帮助编译的,
安装distcc, 配置和gentoo B类似,
设置allow,listen选项, 启动distcc服务
需要额外的配置工作是, gentoo的机器emerge是采用的是类似于i686-pc-linux-gnu-gcc编译指令, 在其他版本的/usr/bin中会没有这个可执行文件,
假设在arch的/usr/bin中的存在gcc这个可执行文件,
你在arch中创建如下链接
ln -sv /usr/bin/gcc /usr/bin/i686-pc-linux-gnu-gcc
最后提醒下 如果gentoo机器要启用分布式编译在/etc/make.conf 的CFLAGS关于CPU类型请不要使用native的选项, 这样会导致严重的后果。 gcc, glibc最好也不要使用distcc编译。 |
|