Kbuild 即kernel build,是用来编译Linux内核的一套Makefile。Kbuild基于GNU make设计,但是又对Makefile进行了各种扩充:

  • 基于图形界面的菜单式配置

  • 各种预定义目标和变量:menuconfig、obj-y

  • 提供各种跨平台工具和编译

  • 递归式Makefile

Linux内核可以灵活自由的高度裁剪和定制,其底层技术支撑除了模块机制之外,还有一项技术就是:可以使用Kbuild编译系统来方便地进行裁剪、配置、编译和安装。内核中的Kbuild子系统随着内核版本不断更新迭代,功能也越来越强大,也越来越受欢迎,被越来越多的开源软件借鉴和使用,比如U-boot、Busybox、Buildroot、Xen等,都在使用Kbuild这种编译系统来管理和维护。总结起来,Kbuild具有如下优势:

  • 高度灵活可定制:编译参数、编译模块选项都可以定制

  • 使用方便:内核裁剪、添加模块、删除模块操作简单

  • 配置简单:可交互的图形菜单

学习Kbuild本期课程预期会有哪些收获?

  • 深刻理解Makefile是如何编译Linux内核、U-boot等大型工程的

  • 遇到编译错误时,提供更多的视角去分析

  • 提供了一张地图,破解Linux内核的“黑暗森林”

  • 有助于理解内核启动流程、组织架构

  • 掌握Kbuild工作原理,对学习其他开源软件有帮助

本期课程主要内容:

如何使用Kbuild Makefile:

  • 裁剪、配置内核

  • 编译内核

  • 往内核中添加新的模块

Kbuild工作流程分析:

  • 内核镜像如何生成?

  • 内核模块编译

  • 内核模块安装

  • 内核头文件安装

  • 内核源码中的空头文件探秘

学习须知:

学习本课程前,需要具备Makefile基础知识,知道程序编译、链接的基本原理。如果没有此基础,建议先学习之前的《Linux三剑客》基础课程:Makefile工程实践:从零开始一步一步写项目的Makefile,学习效果会更好。

Linux内核编程02:Kbuild子系统相关推荐

  1. Linux 内核编程指南

    Linux 内核编程指南   PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...

  2. linux内核_Linux驱动编程的本质就是Linux内核编程

    由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...

  3. linux内核编程(一)

    这些天在学习linux内核编程,就在这里小小的show以下. 首先编写如下的linux代码.并命名为hello.c 这里你应该注意亮点: 第一.linux内核编程,不同于普通的用户态下的编程:有一个入 ...

  4. 由尚德linux内核编程进阶教材,由尚德老师Linux内核编程入门视频教程

    由尚德老师讲解的Linux内核编程教程入门课程,此课程学完后可以接着学进阶篇,下载地址:http://blog.csdn.net/congxue/archive/2009/05/17/4194112. ...

  5. 初探linux内核编程,参数传递以及模块间函数调用

    一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...

  6. 【华为云技术分享】Linux内核编程环境 (1)

    在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...

  7. Linux内核编程接口函数

    Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...

  8. linux内核编程(hello world示例程序)

    linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一.它们提供了可伸缩的.动态的内核.其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极 ...

  9. Linux 内核编程风格

    Linux 内核编程风格 (518 个字於此篇帖子) (已阅读: 1177 次) 这篇短小的文章是对Linux内核编程风格的建议.编程风格非常的个性化,而且,我并不想将我的观点强加给任何人,但是为了变 ...

  10. linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx

    Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...

最新文章

  1. 【数据库】适用于SQLite的SQL语句(三)
  2. html经过一段时间自动交换图像,Dreamweaver交换行为:实现图像交换
  3. BZOJ 1013 JSOI2008 球形空间产生器sphere 高斯消元
  4. 吉大20春学期C语言程序设计作业二,吉大18春学期《C语言程序设计》在线作业二【答案】...
  5. [微信开发] - 用户获取推广二维码
  6. AI基础:走进深度学习
  7. Centos7安装Oracle JDK
  8. 大前端最强vscode教程(基础篇)
  9. 数据结构顺序表基本流程
  10. mysql 扫描所有字段_select扫描mysql innodb表时,select只输出主键列,会不会扫描全表?...
  11. BZOJ1298:[SCOI2009]骰子的学问
  12. makefile 打印变量_通过实例学Makefile
  13. siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
  14. Android混淆和加固详解
  15. cntv客户端_cntv网络电视_cntv官方下载-太平洋下载中心
  16. 计算机考研吉大东北大学大连理工,考研就选985/211!这7所985高校却一个A+学科都没有,认真的吗?...
  17. CS相关经典书籍的书评
  18. 贪吃的小Q_腾讯2018春招技术类编程题
  19. Mounty for Mac(NTFS格式读写工具)
  20. 纯css3 夜晚天空月亮动画特效(源码公益站)

热门文章

  1. 计算机软件cae,各种CAE软件介绍
  2. 【算法】数独解题——用python代码
  3. 终极算法——第九章:解开迷惑
  4. 黑群晖docker清理缓存_群晖Docker半洗白 不关机快速修改sn/mac方法
  5. APPCLOUD STUDIO结合 手机APPLOADER进行模拟开发
  6. 线性代数中(线代中)的克莱姆法则,又译克拉默法则(Cramer‘s Rule)
  7. Jenkins教程:使用Jenkins进行持续集成
  8. [FFmpeg] 拼接音频
  9. 抓包工具Charles乱码解决办法
  10. 账龄分析表excel模板_老会计分享财务报表及EXCEL会计报表分析系统模板!收藏领取!...