【华为云技术分享】Linux内核的分布式编译(1)

上一期中我们介绍了Linux内核模块依赖图的绘制方法,这一期中我们将介绍Linux内核的分布式编译方法和分布式编译工具distcc的安装过程。

一、Linux内核的分布式编译

分布式编译是指将源程序通过网络中的多台计算机的协同编译过程编译成目标程序的技术。分布式编译一般通过TCP或SSH等协议将编译任务分配至网络中不同的计算机上,使这些计算机协同完成编译工作。Linux内核可以使用distcc[1]进行分布式编译。

distcc是一个通过网络中的多台计算机对C、C++、Objective C或ObjectiveC++代码进行分布式编译的程序。distcc是一款编译速度快且容易安装的分布式编译工具,它能产生和本地编译一致的编译结果。理论上使用distcc进行分布式编译相对于本地编译的最大加速比为3.0x,但在实际使用中加速比会低于这一理论值。

distcc并不要求所有的机器共享一个文件系统或有同步的时钟,也不要求它们有相同的library或头文件。当安装了交叉编译器时,distcc甚至不需要这些机器有相同的处理器或操作系统。

为了搭建基于distcc的Linux内核分布式编译环境,我们在Ubuntu 18.04环境下首先使用命令下载distcc v3.3.3版:

然后解压源码包:

进入distcc-3.3.3目录后,有一个INSTALL文件。打开INSTALL文件,文件里面记录了distcc-3.3.3的安装和配置过程。

在安装distcc-3.3.3之前,我们首先要安装一些依赖项:

然后进行配置:

接着进行编译:

使用make check命令可以看到哪些功能被编译了而哪些没有:

安装相关的软件可以使与相关功能有关的选项由NOTRUN变为OK。例如,若发现Gdb_Case选项由于GDB没有安装而为NOTRUN,则可以安装GDB,之后再次运行make check该选项会变为OK。

然后就可以安装了:

当安装或卸载编译器时需要再次运行最后一个命令。到这一步为止,distcc就在这台机器上安装好了。

我们将以上过程整理为一个脚本,放在码云仓库里的distccInstallation文件夹中,其地址为:

https://gitee.com/luo_yu_zhe/openEulerInstallation

二、结语

本期我们介绍了Linux分布式编译工具distcc的基本情况和安装方法,下一期我们将尝试用另一种distcc的安装方法,并对Linux4.19.90版内核进行分布式编译。



参考文献

[1]https://distcc.github.io/

原文地址:https://www.cnblogs.com/huaweicloud/p/12523488.html

时间: 2024-10-09 01:33:00

【华为云技术分享】Linux内核的分布式编译(1)的相关文章

【华为云技术分享】Linux内核发展史 (2)

Linux是由赫尔辛基大学的Linus Torvalds开发的,在系统开发期间得到了因特网上广大UNIX程序员的帮助.它最初只是受Andy Tanenbaum教授的Minix(—个小型的类UNIX系统)启发而开发的一个程序,纯属个人爱好,但后来它逐步发展成为一个完整的系统.Linux的成功来源于其之前操作系统和应用软件的已有工作,主要是UNIX和GNU.本小结我们将介绍一下UNIX的发展简史. 一.UNIX操作系统发展历史 UNIX操作系统最初是由贝尔实验室开发的,当时的贝尔实验室是电信业巨头A

【华为云技术分享】Linux内核发展史 (1)

openEuler是基于Linux 内核的企业级Linux 服务器操作系统平台的开源社区发行版.openEuler支持鲲鹏架构,可运行在TaiShan服务器上.本技术连载将会从理论基础.源码分析和实操方法三个方面来比较全面地介绍内核编程与应用编程的基础知识,到2020年8月之前主要介绍内核编程部分.通过本连载的介绍,您将对openEuler内核编程和应用编程的理论和实践知识有一个基本的了解.本小节将从Linux内核发展史出发,带您走进openEuler的世界,一起学习操作系统的基础知识和open

【华为云技术分享】Linux内核模块依赖图绘制(1)

在上一期中,我们以Linux网络模块中的CAKE系统为例,介绍了对Linux补丁源码的分析方法,这一期中我们将介绍如何查看Linux内核中各模块的依赖关系. 一.查看Linux内核模块依赖关系 Linux内核中各个模块之间有相互依赖的关系,表现为一个模块中的文件可以包含另一个模块中的头文件,从而实现对其它模块中定义的函数和变量的调用. 为了查看模块之间的依赖关系,我们可以使用lsmod命令,该命令展示了内核已装载模块的模块列表和各个模块所依赖的模块.如果读者已经按照“Linux内核编程环境”小节

华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件项目开发过程中管理代码所有修订版本的软件,能够存储.追踪文件的修改历史,记录多个版本的开发和维护,事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理.版本控制系统(Version Control Systems)主要分为两类,集中式和分布式. 2.1.1 集中式版本控制系统 集中式版本控

【华为云技术分享】漫谈LIteOS-物联网操作系统介绍

[摘要] 本文主要对于目前物联网操作系统的定义以及主要特点进行了分析,最后介绍了几个常见的物联网操作系统. 1简介 提到操作系统,可能首先想到的就是苹果操作系统,windows,Linux,Unix,Android,IOS等,显然目前比较为人熟知的操作系统基本都是一些手机或者电脑端的操作系统.而随着互联网技术的不断发展,硬件的体积越来越小,物联网技术也迎来了爆棚式的发展.物理网不同于 互联网的不同在于后者更关注的是人与人的互联,而前者是更加强调人与物,物与物的连接,从而实现万物互联(IOT).显

揭秘丨7分钟看懂华为云鲲鹏Redis背后的自研技术【华为云技术分享】

2019年5月,华为云发布全球首个基于自研ARM架构的分布式缓存鲲鹏Redis,搭载华为LibOS+华为编译器+安全容器引擎三项黑科技,在保证Redis强劲高性能外,还降低客户30%的使用成本,真正实现了好用不贵的普惠型分布式缓存Redis产品. 本文从技术视角解读华为云鲲鹏Redis是如何通过数据中心基础设施.芯片.硬件.软件等全栈创新优化,达成以上效果. 一.为什么ARM架构适合Redis? 众所周知,Redis是一款风靡全球的高性能.高灵活性.数据结构类型丰富的key-value内存数据库

王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019【华为云技术分享】

演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019)在北京举办.在计算机视觉技术专题,华为云OCR人工智能高级算法工程师王晶分享了“文字识别服务的技术实践.底层框架及应用场景”的主题演讲. 演讲的第一部分,他分享了文字检测和识别的基础知识以及难点和最新进展.第二部分是华为云文字识别服务关键能力.关键技术,以及落地过程中遇到的“坑”,这对其他人工智能产

【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得

DDD做为软件设计方法于2004年提出,一直不温不火,最近几年突然火起来了,为啥呢?正所谓机会给有准备的人,因为微服务的流行,大家都跃跃欲试把传统单体软件转成微服务架构,但理论很丰满,现实很骨感,光是分解微服务就让人找不到北,而DDD是歪打正着也好,富有远见也好,正好适合微服务转型设计,不火都难. 最近学习了领域驱动设计(Domain-Driven Design),感觉受益匪浅,那到底啥是DDD呢?这里分享一下学习心得.网上有很多详细的资料,感兴趣可以看看这个https://www.infoq.

【华为云技术分享】技术探秘:华为云瑶光何以定方向

作为北斗第七星,瑶光自古就可用来判断四季更迭.引向定时.而作为全新发布的智能云操作系统,瑶光智慧云脑又是如何做到统领云上各类资源.实现租户需求与资源供应之间最佳匹配的呢?在华为云瑶光实验室.华为云算法创新实验室里,我们找到了答案. #初识资源调度# 云OS:我太“南”了 依托虚拟化技术,我们得以将数据中心海量的计算.存储资源以云服务的形式对外提供.而随着数据中心规模扩展.边缘计算带来的算力延伸,承担着高效.精准资源调度的云操作系统面临着三大挑战: 第一个挑战是云计算的资源消耗/售卖模式带来的.云