项目简介
本项目是一个基于 C++ 的分布式编译系统,名为 Icecream。其目的是将编译任务分配到远程机器上进行并行编译,以此加速大型项目的构建过程。Icecream 借助中央调度器动态地把编译任务分配到最快的空闲服务器,尤其适用于共享计算资源的场景。
项目的主要特性和功能
- 分布式编译:把编译任务分配到多个远程节点,支持并行编译,大幅提高编译速度。
- 动态调度:中央调度器依据节点负载动态分配任务,确保任务分配到最快的空闲节点。
- 跨平台支持:支持 Linux、FreeBSD、DragonFlyBSD、OS X 等平台,且支持跨平台编译。
- 环境管理:自动管理编译环境,支持跨编译器和跨架构的编译任务。
- 与 ccache 集成:可与 ccache 结合使用,进一步提升编译效率。
- 调试与监控:提供调试输出和监控工具(如 icemon),便于用户了解编译集群状态。
安装使用步骤
假设用户已下载本项目的源码文件,以下是安装和使用步骤:
1. 安装依赖库:确保系统中安装 libcap-ng-devel
、libarchive-devel
、lzo-devel
、libzstd-devel
。
2. 编译和安装:
bash
cd icecream
./autogen.sh
./configure --prefix=/opt/icecream
make
make install
注意:要指定 --prefix
参数,防止 Icecream 覆盖系统的 gcc
安装。
3. 配置环境变量:将 Icecream 的路径添加到 PATH
环境变量:
bash
export PATH=/opt/icecream/lib/icecc/bin:$PATH
可将此命令添加到 ~/.bashrc
或 /etc/profile
中,实现每次启动自动生效。
4. 启动 Icecream 服务:
- 启动调度器:
bash
./icecc-scheduler -d
- 启动守护进程:
bash
./iceccd -d
可在多台机器上启动守护进程形成编译集群。
5. 使用 Icecream 进行编译:使用 make
命令时指定并行编译任务数,例如:
bash
make -j6
-j
参数后的数字表示并行编译任务数,建议设为逻辑处理器数量的两倍。
6. 监控编译集群:使用 icemon
工具监控编译集群状态:
bash
icemon
7. 持久化配置:为使系统重启后自动加入 Icecream 集群,可参考系统文档配置守护进程和调度器的自动启动。
注意事项
- 防火墙配置:确保防火墙允许 Icecream 使用的端口(TCP 10245、8765、8766 和 UDP 8765)。
- 编译器路径:确保编译任务使用 Icecream 提供的编译器路径(如
/opt/icecream/lib/icecc/bin/gcc
)。 - 跨平台编译:在异构环境中使用 Icecream 时,可能需手动配置编译环境。
支持平台
Icecream 支持 Linux、FreeBSD、DragonFlyBSD、OS X 平台。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】