使用 icecream 进行分布式编译
下载并编译icecream
make
su – root
make install
安装在 /opt/icecream 目录里
配置
在主控机上起 icc scheduler:
/opt/icecream/sbin/icecc-scheduler -d -v
在用户的.bashrc 里加上路径:
export PATH=/opt/icecream/libexec/icecc/bin:$PATH
/opt/icecream/libexec/icecc/bin 放的是名为gcc, g++的可执行文件,也就是
说它们要优先于系统原来默认的gcc。
如果要做native 编译,用命令
/opt/icecream/bin/icecc –build-native
它会生成一个打包文件,包含了编译器需要用到的所有文件。 在进行分布式编
译的时候,这些文件会传到编译主机上,并创建一个chroot环境。我觉得这是优于distcc的地方:不需要把编译器安装到另一台机器上。
export ICECC_DEBUG=debug
该命令让icecc 输出调试信息
编译
然后就可以编译了,必须加上-j选项
make -j6
观察输出, 如果看到类似这样的log,说明分布式编译生效了:
<example>
ICECC[22334] 10:40:30: connected to /var/run/icecc/iceccd.socket
ICECC[22333] 10:40:30: Have to use host 172.25.52.190:10245 – Job ID: 1351 – env: i686 – has env: true – match j: 0
ICECC[22334] 10:40:30: env: i686 ‘/home/yuwen/src/binutils-2.15/6bc0f8d2aeca36e35947bdd88dd61f53.tar.gz’
ICECC[22334] 10:40:30: ./hex.c compiled 1 times on i686
ICECC[22333] 10:40:30: connected to 172.25.52.190
</example>
注意: native 编译并不能总是生效,比如一台x86 64位机是icc scheduler,另
一台是x86 32位机是工作机, 64位上的编译器并不能传到32机上。 但反过来是
可以的。
