【华为云技术分享】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/
【华为云技术分享】Linux内核的分布式编译(1)相关推荐
- 【华为云技术分享】Linux内核的分布式编译(2)
上一期中我们介绍了用源码包安装distcc的方法,这一期我们尝试用distcc对Linux 4.19.90内核进行分布式编译. 一.Linux内核的分布式编译 我们尝试用同一个子网中的三台服务器对Li ...
- 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 3
4. 微观层面 4.1 个体动机 在开源软件发展之初, 商业组织的投入很少甚至没有, 完全是靠Richard Stallman 或者 linus Torvalds 这样的个人在努力推动开源软件艰难前行 ...
- 【华为云技术分享】“技术-经济范式”视角下的开源软件演进剖析-part 1
前言 以互联网为代表的信息技术的迅猛发展对整个经济体系产生了巨大的影响.信息技术的发展一方面使知识的积累和传播更加迅速,知识爆炸性的增长:另一方面,使信息的获取变得越来越容易,信息交流的强度逐渐增加, ...
- 【华为云技术分享】三大前端技术(React,Vue,Angular)探密(下)
[华为云技术分享]三大前端技术(React,Vue,Angular)探密(上) [Angular] Angular(通常被称为 "Angular 2+"或 "Angula ...
- 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读
3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...
- 【华为云技术分享】Linux内核发展史 (2)
Linux是由赫尔辛基大学的Linus Torvalds开发的,在系统开发期间得到了因特网上广大UNIX程序员的帮助.它最初只是受Andy Tanenbaum教授的Minix(-个小型的类UNIX系统 ...
- 【华为云技术分享】Linux内核补丁源码分析(1)
在上一期中,我们介绍了Linux内核编程环境,在这一期中,我们将通过实例来介绍如何分析Linux内核的补丁. 一.Linux内核补丁 在"Linux内核发展史"中,我们简要介绍了L ...
- 【华为云技术分享】Linux内核编程环境 (2)
在上一期中,我们介绍了Linux内核编译方法,这一期我们用一个例子来介绍如何向Linux内核中增加一个模块. 一.LKM内核模块 LKM是Loadable Kernel Module的缩写,意思是可加 ...
- 【华为云技术分享】Linux内核编程环境 (1)
在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...
最新文章
- javascript加python_是否可以在javascript中添加一些新的语法?
- 中国移动如何开具并下载打印电子发票?
- Google ARCore SDK
- 非文学翻译理论与实践_2019年北京语言大学翻译学专业考研经验分享
- 会场安排(nyoj14)
- leetcode 456. 132 Pattern 132模式 题解(栈)
- 自加++(Java版本)
- Delphi XE5 for Android (三)
- pxe无人值守智能安装linux
- linux如何查看隐藏进程中勒索病毒,.FileFuck勒索病毒删除+数据恢复(HiddenTear变体)...
- 树莓派存储方案_树莓派网络存储(NAS)
- 程序猿段子_程序猿的24个段子,笑着笑着眼泪就出来了
- 刷机大师独家支持android,刷机大师v3.4.5发布 独家支持荣耀6一键刷机
- PPT文件不能编辑是什么原因
- 浅谈Windows XP系统漏洞的封堵
- 调研:暴恐识别(图像识别)by_xxzcc
- 测距仪控制c语言程序,激光测距仪系统设计(机械图电路图c语言程序)
- 【11g体系结构,4】AMM(内存分配自动管理)
- PTA 7-1 旅游规划 (25分) 数据结构 Floyd
- 章鱼网络进展月报 | 2021.11.1-11.30
热门文章
- abcde依次进入一个队列_数据结构与算法(6):队列
- php获取内存峰值,php内存\获取\使用
- 三星s8android pie,三星更改Galaxy S8的Android Pie更新计划,添加Gala
- redis 首次请求_Redis主从复制
- OPCDA通信--工作在透明模式下的CISCO ASA 5506-X防火墙配置
- 实验吧之【Forms、天网管理系统】
- hdu 1255 覆盖的面积 (扫描线求矩形交)
- 【.Net】C#实现多线程的方式:使用Parallel类
- PostreSQL崩溃试验全记录
- 由锚点失效引发的hasLayout探究