• Kconfig内容(详细)总结附示例快速掌握


    一、简介

    Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config

    Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”
    主要内容

    depends on:表示依赖于XXX,“depends on TMPFS”表示只有当TMPFS配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项
    select:是反向依赖关系的意思,即当前配置选项被选中,则GENERIC_ACL就会被选中。
    imply:弱反向依赖,此属性和 select 相似,用于选定一个符号,但是被选定的符号仍有可能被直接依赖或用户输入设置为 n
    
    • 1
    • 2
    • 3

    二、内容解析

    2.1 menuconfig

    此入口和简单 config 入口相似,定义一个符号 symbol,但是也暗示一个菜单块,后接子入口。需保证所有子入口应该在此入口下方,且依赖于此入口符号。语法如下:

    menuconfig 
    
    
    • 1
    • 2

    在这里插入图片描述在这里插入图片描述

    2.2 choice/endchoice

    定义一个选择组。选择组类型仅仅可以设置为 bool 或 tristate,如果未指定类型,则取决于第一个选择项的类型。bool 类型只允许单个 config 入口被选择,tristate 类型允许多个 config 入口被设置为 m。 支持语法如下:

    choice [<symbol>]
    <choice options>
    <choice block>
    endchoice
    
    • 1
    • 2
    • 3
    • 4

    2.3 comment

    定义注释语句。将多个类似的配置选项组合在一起,供用户单选或多选,并且打印到输出文件中,仅支持依赖属性。语法如下:

    comment <prompt>
    
    • 1
    <comment options>
            choice
                 prompt "ARM system type"
                 default ARCH_VERSATILE
                 config ARCH_AAEC2000
                      .........
                 config ARCH_REALVIEW
                      .........
            endchoice
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    prompt "ARM system type"给出提示信息“ARM system type”,光标选中后回车进入就可以看到多个config条目定义的配置选项
    choice条目中定义的变量只有bool和tristate

    2.4 menu/endmunu

    定义一个菜单块。菜单块内的其他子入口继承此项的依赖。仅支持依赖和可视属性。语法如下:
    menu

    endmenu

    2.5 if/endif

    定义一个条件块。条件块内的其他菜单入口追加此项的依赖表达式 expr。

    if <expr>
    <if block>
    endif
    
    • 1
    • 2
    • 3

    2.6 source

    source条目用于读取另一个Kconfig文件

    source <file>
    
    • 1

    如下图,在pci的Kconfig中加入source
    在这里插入图片描述
    在这里插入图片描述

    2.7 mainmenu

    定义配置程序的标题栏。应该被放在配置文件的开头。

    mainmunu <prompt>
    
    • 1

    菜单属性
    菜单项可以有一些属性。但是并不是所有菜单项都支持任意属性,详看菜单项说明。

    2.8 类型 - type

    定义类型的语法如下:

    <type>
    
    • 1

    有以下几种类型:

    类型说明
    bool布尔类型
    tristate三态类型,可以设置为 y、m 或 n。
    string字符串类型
    hex十六进制整数类型
    int整数类型

    2.9 输入提示 - prompt

    每个菜单项最多可以含有一个提示属性,此属性接收一个字符串,直接显示给用户提示输出。语法如下:

    prompt <prompt> [if <expr>]
    
    • 1

    也可以在类型后面直接跟输入提示。

    <type> <prompt>
    
    • 1

    2.10 默认值 - default

    一个配置菜单项可以接收多个默认值,但是仅第一个默认值有效。未指定默认值的 config 入口默认未选定。语法如下:

    default <value> [if <expr>]
    
    • 1

    也可以在类型后面直接跟默认值。

    def_bool/def_tristate <value> [if <expr>]
    
    • 1

    2.11 依赖 - depends

    菜单项的依赖属性会应用到所有的其他属性上。同时指定多个依赖属性时,它必须同时满足,即为逻辑与关系。语法如下:

    depends on <expr>
    
    • 1

    2.12 反向依赖 - select

    此属性可以强制选定一个符号,无论此符号的依赖是否满足。被选定的符号仅支持 bool 或 tristate 类型。语法如下:

    select <symbol> [if <expr>]
    
    • 1

    2.13 弱反向依赖 - imply

    此属性和 select 相似,用于选定一个符号,但是被选定的符号仍有可能被直接依赖或用户输入设置为 n。语法如下:

    imply <symbol> [if <expr>]
    
    • 1
    假设有如下定义:
    config FOO
        tristate "foo"
        imply BAZ
    
    config BAZ
        tristate "baz"
        depends on BAR
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.14 可见性 - visible

    此属性仅用于菜单块,根据条件来决定是否向用户显示菜单块(但是包含的符号依然可以被其他符号选定),和应用于单个菜单项的 prompt 属性相似。定义语法如下:

    visible if <expr>
    
    • 1

    数字范围 - range
    此属性用于限制 int 和 hex 类型符号的输出值的范围。定义语法如下:

    range <symbol> <symbol> [if <expr>]
    
    • 1

    2.15 帮助文本 - help

    此属性定义一段帮助文本。可以为多行或空行,当行的缩进级别小于帮助文本的第一行时,表示结束。定义语法如下:

    help
    	<help text>
    
    • 1
    • 2

    在这里插入图片描述

    三、其他相关链接

    1、交叉编译linux内核总结

    2、Linux下设备树内容解析

  • 相关阅读:
    关于Jupyter markdown的使用
    composer 包开发
    算法-二叉树前中后层遍历
    【GUI】-- 10 贪吃蛇小游戏之静态面板绘制
    核心实验23_GRE over IPsec vpn_ENSP
    quilt基本使用
    [附源码]计算机毕业设计springboot在线票务系统
    第二十四章《学生信息管理系统》第1节:学生信息管理系统简介
    前端知识积累
    ARM 版 Kylin V10 部署 KubeSphere 3.4.0 不完全指南
  • 原文地址:https://blog.csdn.net/Luckiers/article/details/126440197