distcc 的使用
在项目的开发过程中,经常出现多个开发人员集中在某个 linux 内网开发机上统一开发的情况,随着开发人员越来越多、项目编译得越来越频繁,开发机的压力越来越大,所以考虑用代码交叉编译的方式来缓解开发机的压力。
distcc 的概述:在需要使用 distcc 的服务器上,安装 distcc 软件。
(1)要把某台机子当成配合编译的机器,需要在这台机子上启动 distcc 服务;
(2)当在一台机子上需要其他机子交叉编译,则这台机子需要配置其他机子的信息,将其他机子的 ip 加到这个环境变量里面 DISTCC_POTENTIAL_HOSTS。
distcc 的安装:
1、首先根据官网安装 https://distcc.github.io/
./autogen.sh # If "configure" does not already exist.
./configure
make
make check # Optional! Should have python >= 3.1 installed.
make install # You may need to use "sudo" for this command.
make installcheck # Optional! Should have python >= 3.1 installed.
update-distcc-symlinks # Needs "sudo". Run this again if you install/remove compilers
2、./configure 的时候报错:configure: error: Cannot find libiberty。这是因为缺少 libbinutils 库,则安装 binutils-devel。
3、make 的时候发现 make 不成功,make 暂停在:
if test -z ":"; then \
echo "Not building include-server: No suitable python found"; \
else \
mkdir -p "./_include_server" && \
DISTCC_VERSION="3.3.2" \
SRCDIR="." \
CFLAGS="-g -O2 -MD -W -Wall -Wimplicit -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wmissing-declarations -Wuninitialized -pthread -Wp,-U_FORTIFY_SOURCE -Wno-missing-prototypes -Wno-missing-declarations -Wno-write-strings" \
CPPFLAGS="-DMINILZO_HAVE_CONFIG_H -DHAVE_CONFIG_H -D_GNU_SOURCE -DLIBDIR="\"/usr/local/lib\"" -DSYSCONFDIR="\"/usr/local/etc\"" -DPKGDATADIR="\"/usr/local/share/distcc\"" -Isrc -I"./src" -I"./lzo" -I"./popt"" \
: "./include_server/setup.py" \
build \
--build-base="./_include_server" \
--build-temp="./_include_server"; \
fi
根据官网 https://raw.githubusercontent.com/distcc/distcc/master/INSTALL 说明,python 版本需要大于 3.1。
4、在服务器上安装 python3.4,只要 /user/bin/ 目录下有 python3.4 就可以了,python 默认安装在 /usr/local 下,可以 ./configure --prefix=/usr。python 安装成功以后,要重新运行下 distcc 的 ./configure ,再 make。
5、ln -s /usr/lib/distcc/ /usr/local/lib/distcc
distcc 的配置
1、用于交叉编译的机器,需要运行 distcc 的服务,一般用以下命令:
distccd --user nobody --daemon --allow 127.0.0.1 --allow 192.168.2.0/24
2、需要使用交叉编译的服务一般在编译脚本里加上以下命令:
export DISTCC_HOSTS="localhost 192.168.2.236 192.168.2.238"
export DISTCC_POTENTIAL_HOSTS="localhost 192.168.2.236 192.168.2.238"
export DISTCC_LOG="./distcc.log" #编译日志
3、如果是使用 cmake,可以使用以下命令:
cmake -DCMAKE_C_COMPILER=/usr/lib/distcc/cc -DCMAKE_CXX_COMPILER=/usr/lib/distcc/g++ ../
需要确认哪些文件是在哪些服务器上编译的,可以使用命令 distccmon-text 1,1表示1秒更新一次。
distcc 的使用的更多相关文章
- dmucs与distcc
之前配置distcc没有考虑负载均衡这一项,现在考虑使用dmucs实现distcc的负载均衡 官方手册 http://dmucs.sourceforge.net/ 使用官方手册编译会报错,等解决问题后 ...
- distcc (dcc_execvp) ERROR: failed to exec XX: Permission denied
首先先确保一下是不是能执行下面语句: # sudo -u nobody XX --version 如果能看见版本信息,则可以不用往下看. 再检查一下distccd.service # sudo cat ...
- (转)Android分布式编译学习(一)distcc实现分布式编译 —— Ubuntu12.04上部署distcc分布式编译
转自:http://blog.csdn.net/eqiang8271/article/details/17144411 版权声明:本文为博主原创文章,未经博主允许不得转载. Android代码庞大 ...
- distcc配置
原理图: OS: ubuntu Server 12.04 1.安装 apt-get install distcc 2.配置 将文件/etc/default/distcc修改为如下格式 STARTDIS ...
- cmake工程使用distcc
distcc可以加速编译,但是遇到cmake可能就需要处理下. 问题 distcc在 /usr/lib/distcc 中放了各编译器的soft link(如cc/gcc等等),如果 /usr/lib/ ...
- distcc加速内核编译
Linux内核编译实在是费时间的事,搞内核移植的时候总要编译,生命有一部分就浪费在等内核编译完成上,有心想买个HP的工作站,看了下Z840的价格,想想还是算了.distcc早就听说过,一直没有去试试, ...
- metasploit--exploit模块信息
Name Disclosure Date Rank Description ---- ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
- ccache高速编译工具
ccache的主页:http://ccache.samba.org distcc的主页:http://distcc.samba.org 1.背景: 在处理一些规模相对较大的工程时,编译花费的时间可能会 ...
随机推荐
- Java 类、接口的API
本章节收集的类/接口API有: Object类,枚举,包装类,接口Comparable,类Arrays,Thread类,System类,Math,BigInteger,Random,日期时间,异常 O ...
- cesium定义线面
面: var polygon = viewer.entities.add({ polygon : { hierarchy : { positions : null, holes : [{ positi ...
- day20190904一号店网页HTML+CSS
1.知识要理一理.梳理.当天讲了什么内容?当天我学习到了什么内容?看懂.所有的学习型从模仿开始.1.看懂代码,看懂思路,学思路,多问自己问题,为什么要这么写?下一步为什么要这么写?因 果.2.多练多敲 ...
- CentOS 7 ETCD集群配置大全
目录 前言 环境准备 安装 静态集群 配置 node01 配置文件 node02 配置文件 node03 配置文件 启动测试 查看集群状态 生成TLS证书 etcd证书创建 安装cfssl工具集 生成 ...
- 文件系统之LVM 逻辑卷管理
1. LVM介绍 LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理. 物理卷(PV,Physical Volume):就是真正的物理硬盘或分区. 卷组(VG,Vol ...
- window.open()打开新窗口 及参数
在jsp页面中需要使用到弹出窗口,想到js的window对象有一个open方法可以弹出窗口,于是对open方法进行记录. 首先是open方法的语法及定义: 定义: open() 方法用于打开一个新的浏 ...
- [学习笔记] [数据分析] 02、NumPy入门与应用
01.NumPy基本功能 ※ 数据类型的转换在实际操作过程中很重要!!! ※ ※ ndarray的基本索引与切片 ※ 布尔型数组的长度必须跟被索引的轴长度一致 花式索引是利用“整数数组”进行索引. 整 ...
- PHP命令空间namespace及use的用法
使用namespace的目的 命名空间将代码划分出不同的空间(区域),每个空间的常量.函数.类(为了偷懒,我下边都将它们称为元素)的名字互不影响, 这个有点类似我们常常提到的'封装'的概念. 团队合作 ...
- 【LiteOS】STM32F103-LiteOS移植教程(详细篇)
总览 本文基于STM32F103C8T6,详细讲述华为LiteOS的移植过程.开发工具是MDK5.LiteOS官方已经适配过cortex M系列内核的单片机,因此移植过程非常简单. LiteOS有两种 ...
- Xcode9 脚本打包报错
Xcode9 脚本编译报错 xcodebuild -exportArchive fails with error Locating signing assets failed X9的exporto ...