内核编译机制

news2025/1/11 14:26:43

inux内核的编译主要过程:配置、编译、安装

  • 配置主要由Kconfig提供图形界面完成

  • 编译主要基于Kbuild编译系统,执行make完成编译

  • 安装主要也是基于Kbuild提供的脚本,然后执行make完成安装

Kconfig

Kconfig用于内核的配置,make menuconfig显示的菜单就来自Kconfig

make menuconfig的菜单包括了多层,每层都是各个目录下对应的Kconfig产生的,选择好配置后,配置结果会被保存到.config文件中。

执行Makefile时,Makefile就会根据.config的结果来实现内核的编译。

Kconfig语法

图片

Kbuild

KbuildKernel build,是内核的一个编译系统。

简单来说,Kbuild是对Makefile语法功能的扩展。

例如,kbuild定义了很多有用的变量如obj-m`` obj-y,-objs等等,用户只要为这些变量赋值,kbuild会自动把代码编译到内核或者编译成模块。

Linux内核使用kbuild编译时,会扫描两次LinuxMakefile:首先读取顶层的Makefile文件,然后根据读取到的内容第二次读取kbuild的Makefile文件来编译Linux内核。

内核的Makefile包括五部分:

图片

Makefile

顶层的Makefile是编译的入口,下面分析一下顶层Makefile文件。

顶层Makefile会向各子目录的Makefile传递一些信息,有些变量,例如vmlinux-dirs,不仅在顶层Makefile中定义并且赋值,而且在arch/*/Makefile还作了扩充。

图片

kbuild的更多用法,详细参考内核源码文档:

Documentation/kbuild/makefiles.txt

Documentation/kbuild/modules.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/915901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyQt5实操及问题记录

下载与配置 下载 下载使用pip install即可 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.com/simple配置 参考: https://blog.csdn.net/m0_57021623/article/details/123459038?ops_request_misc%257…

线程池一定需要了解的那些事

一、阿里Java开发规范,为啥禁止直接使用Executors创建线程池 newFixdThreadPool 及 singleThreadPool 中默认队列长度为 Integer.MAX_VALUE,如果线程执行比较耗时,执行任务的线程在队列中产生大量堆积,进而有导致虚拟机OOM 的风险…

罗德与施瓦茨网络分析仪RSZVA40

ZVA40 主要特点 台具有以下特点的矢量网络分析仪 带 4 个内部信号源,频率高达 67 GHz,可以快速地对放大器和混频器进行测量 具有 4 个相位相干信号发生器功能(频率可高达 67 GHz) 壹捌叁贰零玖壹捌陆伍叁 中频带宽可高达 30 …

2023国赛数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…

一、pikachu之SQL注入(1)

文章目录 一、SQL注入步骤二、数字型注入(post注入)三、字符型注入(get)四、搜索型注入五、XX型注入六、“insert/updata”注入 一、SQL注入步骤 寻找传参页面;判断是否存在注入点; 字符型注入?数字型注入? 判断字段的数量&#…

引领娱乐潮流:邀请明星办个人演唱会的五大关键步骤

随着娱乐产业的不断壮大和观众对明星的热情高涨,举办个人演唱会已经成为了一种广受欢迎的文化现象。这种活动不仅让粉丝们有机会亲身近距离感受偶像的音乐魅力,同时也为明星和品牌提供了一个宝贵的互动平台。然而,要成功地邀请明星办个人演唱…

Prometheus监控之SNMP Exporter介绍和数据展现

1 SNMP协议介绍 SNMP协议全称是:Simple Network Management Protocol,译为简单网络管理协议,是作为TCP/IP网络管理标准协议,为不同的设备提供统一接口,实现了网络设备之间的统一管理。 SNMP协议分为三个版本&#xf…

Java-进程调度算法

文章目录 为什么要设置进程调度算法?分类1. 先进先出(FIFO)算法优缺点FIFO代码示例 2. 短作业优先(SJF)算法优缺点示例代码 3. 优先级算法(Priority scheduling)优缺点示例代码 4. 时间片轮转算…

java 高级面试题整理(薄弱技术)

session 和cookie的区别和联系 session1.什么是session Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就…

Wireshark数据抓包分析之HTTP协议

一、实验目的: 主要时熟悉wireshark的使用 二、预备知识: HTTP协议的相关知识 what fk,原来只要在右页点击切换,就可以开启2台不同的机器欸!nice 三、实验过程: 1.在机器1中通过管理员身份运行hfs之后&a…

5G网络优化基础班9月11号开班已定,零基础系统教学,带你入门+进阶+实战+就业!

1G、2G、3G时代,更多的是让人们了解和开始使用移动通讯,而随着技术的不断地迭代更新,4G改变生活,5G或将改变社会。5G是第五代移动通信技术的简称,它是一种全新的无线通信技术,将为人们带来更快、更稳定、更…

1.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

0.代码链接 文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(matlab程序)-Matlab文档类资源-CSDN文库 1.简述 本文采用遗传算法的方式进行了下述文章的复现并采用电-热节点的方式进行了潮流计算以降低电网的网络损耗 分析了电网的基本数…

Java学习笔记38

Java笔记38 注解 什么是注解 Annotation是从 JDK 5.0 开始引入的新技术。Annotation的作用︰ 不是程序本身,可以对程序作出解释。(这一点和注释 - comment没什么区别)可以被其他程序(比如编译器等)读取。 Annotatio…

系统认知篇:防腐层、门面模式及适配模式的本质

门面模式和适配器模式是代码级的设计模式,而防腐层本质是一种 防御型策略 ,在更高的层级对系统进行解耦 1 关于防腐层 Anti-Corruption Layer(ACL) 如下: Implement a faade or adapter layer between different subsystems that dont share…

用断言更好地实现替换重复出现的单词

断言是指对匹配到的文本位置有要求。也就是说,在有些情况下,我们对要匹配的文本的位置也有一定的要求。为了解决这个问题,正则中提供了一些结构,只用于匹配位置,而不是文本内容本身,这种结构就是断言。常见…

C++_Linux报错问题记录

1、致命错误:vector:没有那个文件或目录 解决:.c文件只会引用C语言的标准库,vecter是属于C的语法,把文件名称改成cpp即可 2、.cpp文件中下面编译语句报错:对‘std::cout’未定义的引用 gcc -o test test.…

docker 报错

问题说明:我是服务器上面的docker拉到本地30卡想用的,但是失败,报错如下: 服务器上面显存驱动是450,本地30卡驱动是470 nvidia-docker run -it --name 20230821_3 --shm-size 16g -p 10029:22 --privileged 20230821_i…

关于cloudflare的“检查站点连接是否安全”一直反复转圈的问题

前一段时间访问不少网站都会出现类似以下的信息: 其中很多时候哦是没有红色框框一栏,就是拼命在转圈和刷新页面,等上一个小时都没用。以上情况看很多网上的说法是卸载浏览器安装的插件。我寻思我也没安装过什么插件。 对于试过网上不少方法但…

java八股文面试[java基础]—— hashCode 与 equals 区别 == 与 equals的区别

两个对象的hashCode()相同时,equals()相等吗?_两个对象的hashcode一样,equal一样么_不想当个程序员的博客-CSDN博客 equals():比较的是非基本类型的数据的引用地址(即内存地址)是否相同,但是对于重写equal…

Vulnhub: DOUBLE: 1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.209 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.209 目标80端口 sendcommand.php页面源码 写入webshell <?php system($_GET["cmd"]);?> 执行命令 ht…