Kernel Build System中文手册_incomplete

Kernel Build System

想要使用一些工具时,需要开启内核中的某些设置,所以配置,编译内核就必不可少了,本文是linux kernel官方文档中的Kernel Build System章节的中文版本,翻译水平有限,仅供参考

Kconfig 语言

介绍

配置数据库是一系列的一树形组织的配置选项的集合:

+- Code maturity level options
|  +- Prompt for development and/or incomplete code/drivers
+- General setup
|  +- Networking support
|  +- System V IPC
|  +- BSD Process Accounting
|  +- Sysctl support
+- Loadable module support
|  +- Enable loadable module support
|     +- Set version information on all module symbols
|     +- Kernel module loader
+- ...

每个条目都拥有自己的依赖。这些依赖用来决定一个条目的可见性。任何子条目只有在他的父条目可见时才可见。

菜单条目

许多条目定义了一个配置选项。所有其他的条目用来组织他。一个单独的配置选项一般这样定义:

config MODVERSIONS
      bool "Set version information on all module symbols"
      depends on MODULES
      help
        Usually, modules have to be recompiled whenever you switch to a new
        kernel.  ...

每一行都由一个关键字开始并可以跟随多个参数。config开始一个新的配置条目。后面的行定义了这个配置项的属性。属性可以是配置选项,输入提示,帮助文本和默认值等类型。一个配置选项可以使用同一个名字定义多次,但是每个定义必须仅能有一个输入提示,并且类型不能冲突。

菜单属性

一个菜单条目可以有多个属性。这些属性可能在有些地方不适用。

  • 类型定义: “bool”/”tristate”/”string”/”hex”/”int”
    每个配置选项都必须有一个类型。有且仅有两个基础类型:三态(tristate)和字符串。其他所有的类型都是基于这两个基本类型。类型定义后面可以跟输入提示,以下两个例子的作用是相同的:
bool "Networking support"

bool
prompt "Networking support"
  • 输入提示:“prompt” [“if” ]
    每个菜单项最多只能有一个提示符,用于显示给用户。只针对此提示的可选依赖项可以使用“if”添加。
  • 默认值: “default” [“if” ]
    配置选项可以有任意数量的默认值。如果有多个默认值可见,则只有第一个定义的默认值是激活的。默认值不局限于菜单项是在哪定义的。这意味着默认值可以在其他地方定义,也可以被早期的定义覆盖。只有在用户没有设置其他值(通过上面的输入提示)时,默认值才会分配给配置符号。如果可以看到输入提示,则默认值将显示给用户,用户可以覆盖该值。可以选择使用" if "添加仅与此默认值相关的依赖项。
    默认值故意默认为’ n ',以避免过度构建。除了少数例外,新的配置选项不应该改变这一点。目的是为了“make oldconfig”在一个版本到另一个版本的配置中添加尽可能少的内容。

Kconfig 宏语言

Kbuild

Kconfig make config

Linux Kernel Makefiles

构建外部模块

为用户导出内核头文件

递归问题

可重用构建

GCC 插件

使用 Clang/LLVM编译Linux

待学习文章:
一个Linux驱动工程师必知的内核编译机制
Kbuild机制详解(基于Linux5.10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值