分布式编译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

相关推荐

  1. 分布式编译distcc

    2023-12-21 06:56:01       72 阅读
  2. 安全编织:Eureka驱动的分布式服务网格安全策略

    2023-12-21 06:56:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 06:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 06:56:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 06:56:01       82 阅读
  4. Python语言-面向对象

    2023-12-21 06:56:01       91 阅读

热门阅读

  1. git 的碎步浪荡,添加仓库子项目,迁移仓库

    2023-12-21 06:56:01       59 阅读
  2. ElasticSearch插件手动安装

    2023-12-21 06:56:01       76 阅读
  3. webrtc支持的最小宽度和高度

    2023-12-21 06:56:01       72 阅读
  4. 副显示器显示不清晰问题

    2023-12-21 06:56:01       117 阅读
  5. 爬虫scrapy中间件的使用

    2023-12-21 06:56:01       45 阅读
  6. linux 安装 npm pnpm

    2023-12-21 06:56:01       50 阅读
  7. 什么是深度学习,多模态学习,迁移学习,LLM

    2023-12-21 06:56:01       61 阅读