debian配置distcc分布式编译

2024-04-24 22:04

本文主要是介绍debian配置distcc分布式编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

distcc 是一个用于在网络上的多台机器上分发 C、C++、Objective C 或 Objective C++ 代码构建的程序。 distcc 应始终生成与本地构建相同的结果,易于安装和使用,并且通常比本地编译快得多。

distcc 不要求所有机器共享文件系统、同步时钟或安装相同的库或头文件。如果安装了交叉编译器,它们甚至可以具有不同的处理器或操作系统。

它甚至不要求远程主机安装额外类库。

依赖

distcc只是编译器的“前端”,编译器需要使用gcc或者clang。

一、服务器

apt install distcc

最好把apt提示推荐的那几个包也装上。

1. 启动:

distccd --daemon --allow 0.0.0.0/0
#这样是允许所有IP都可以使用服务器进行编译。

2. 停止

因为会起很多个进程,所以用pkill杀死全部。

pskill distccd

3. 配置

也可以在/etc/distcc/clients.allow中设置允许的主机。
还有其他配置。

二、客户机

apt install distcc

同理安装推荐的包。

客户机也可以运行一份distccd,不过没什么必要。

1. 设置编译服务器

vim /etc/distcc/hosts

在里面填上编译器服务器地址:
在这里插入图片描述

这个127.0.0.1不用加,只是方便测试。实际远程走不通时,distcc也会用本地编译器进行编译。

我的客户机是有Qt环境的,远程机只装了编译器,实测可以成功编译。

2. 使用

直接用distcc代替gcc即可,例如cmake项目:

cmake ../ -DCMAKE_CXX_COMPILER=distcc -DCMAKE_C_COMPILER=distcc

除了配置,还可以使用环境变量:

export DISTCC_HOSTS="localhost 192.168.1.104"
export DISTCC_VERBOSE=1
export DISTCC_LOG="/home/sixqaq/distcc.log"

3. 查看使用情况

需要安装包distccmon-gnome

用图形化界面查看:

$ distccmon-gnome

在这里插入图片描述

三、坑

distcc默认不会链接C++标准库。
在编译C++项目时就会报一堆链接失败的错误。

解决办法:

1. cmake

在CMakeLists.txt中添加:

link_libraries(stdc++)

2. distcc

$ distcc -lstdc++

make也有对应的方法来指定。

这篇关于debian配置distcc分布式编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932956

相关文章

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个