当前位置: 首页 > news >正文

分布式编译distcc

工程代码编译速度太慢,决定采用分布式编译来提高编译速度.

distcc ,请参考https://www.distcc.org/

安装

我用的distcc的版本是distcc-3.2rc1, 下载源码,安装步骤如下:

./autogen.sh

./configure --disable-Werror --prefix=/usr/local/distcc-3.2rc1

make

make install

配置

1. 客户端

1.1 检查server上的3632 端口是否可用:

      a. python -m telnetlib 10.58.17.203 3632

      b. nc -zv 10.58.17.203 3632

1.2 export环境变量

      export DISTCC_HOSTS="10.58.17.203/64,lzo,cpp"

      export DISTCC_LOG=/home/ricky/distcc.log

      export DISTCC_VERBOSE=1

64表示:客户端发送到203这台机器的任务最多为64个,与cpu的core数量有关系;

lzo: 允许LZO压缩

备注: 在/etc/environment 文件中可以添加这些变量,开机后这些变量便可以自动导出

      DISTCC_HOSTS="10.58.17.203/64,lzo,cpp"

      DISTCC_LOG=/home/ricky/distcc.log

      DISTCC_VERBOSE=1

1.3 pump

     /usr/local/distcc-3.2rc1/bin/pump make -j16

2. 服务器

 2.1 服务器应该开放3632端口,当然关闭防火墙更加直接了当:

        sudo systemctl stop firewalld

        sudo systemctl status firewalld

2.2  export环境变量

      export DISTCC_HOSTS="10.58.17.203/64,lzo,cpp"

      export DISTCC_LOG=/home/ricky/distcc.log

2.3  daemon

2.3.1    手动运行daemon    

/usr/local/distcc/bin/distccd --daemon -a 10.58.17.201 --user nobody --log-level debug

2.3.2 创建 Systemd 配置文件, distccd 便可以开机后自动运行

      /etc/systemd/system/ 目录中创建一个以 .service 结尾的文件,比如 distccd.service。使用编辑器打开,添加如下内容:

[Unit]
Description=Distccd Distributed Compiler Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/distcc/bin/distccd --daemon -a 10.58.17.201 --user nobody
Restart=always

[Install]
WantedBy=default.target


重新加载 Systemd 配置:

保存并退出编辑器后,使用以下命令重新加载 Systemd 配置:sudo systemctl daemon-reload

启用自动启动:

sudo systemctl enable distccd.service 

这会将 Distccd 服务添加到启动时要加载的服务列表中。

启动 Distccd 服务: 你可以手动启动服务:sudo systemctl start distccd.service
检查状态: 你可以使用以下命令检查服务的状态:sudo systemctl status distccd.service
 

3. 问题定位

1. distcc clent 的 /tmp 目录下会存在distcc_server_stderr_e7eb7455.txt, 这个文件里会存在错误信息;

2. 如果ccache 和 distcc 都要开启的话,执行命令的 ccache 一定要位于distcc 之前:

   /usr/local/bin/ccache /usr/local/distcc-3.2rc1/bin/distcc

3. 查看distcc man 手册

  cd  /usr/local/distcc-3.2rc1/share/man/man1/

  man ./distcc.1.gz

http://www.lryc.cn/news/265668.html

相关文章:

  • Elasticsearch常见面试题
  • solidity 重入漏洞
  • 【智能家电】东胜物联离在线语音方案为厨电企业赋能,实现厨房智能化控制
  • 3DMAX英文版怎么切换到中文版?
  • WEB渗透—PHP反序列化(八)
  • LeetCode——2415. 反转二叉树的奇数层
  • 【Spring学习笔记】Spring 注解开发
  • 【华为数据之道学习笔记】6-5数据地图的核心价值
  • JavaWeb笔记之JSP
  • 在x64上构建智能家居(home assistant)(二)(新版Debain12)连接Postgresql数据库
  • 八股文打卡day6——计算机网络(6)
  • 【PHY6222】绑定详解
  • vue事件绑定
  • 如何在服务器上部署springboot项目
  • 基于Spring Boot的支教志愿者招聘网站
  • 安装gnvm,nodejs,npm使用方法
  • word导入导出-Apache POI 和 Poi-tl
  • Hadoop 集群环境搭建
  • maven完结,你真的学完了吗
  • 【Xcode】解决Unable to process request - PLA Update available
  • 力扣单调栈算法专题训练
  • 【NI-RIO入门】理解Windows、Real Time与FPGA之间数据通信的原理
  • 关于游戏性能优化的技巧
  • antdesignpro实现滚动加载分页数据
  • 步兵 cocos2dx 加密和混淆
  • 【算法设计与分析】——动态规划算法
  • WPF组合控件TreeView+DataGrid之DataGrid封装
  • PIL/Pillow
  • ARM 汇编入门
  • SQL进阶:多表查询