kconfig反向依赖

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kconfig反向依赖相关的知识,希望对你有一定的参考价值。

参考技术A Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config。
Kconfig基本要素:Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”。
Kconfig简介:RT-Thread借助Kconfig文件生成的配置文件rtconfig.h来配置系统,Kconfig文件是各种配置界面的源文件。当在bsp目录下使用env工具执行menuconfig命令时会出现RT-Thread系统的配置界面,所有配置工具都是通过读取当前bsp目录下的Kconfig文件来生成配置界面的,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig文件。配置工具读取各个Kconfig文件,生成配置界面供开发人员配置系统,最终生成RT-Thread系统的配置文件rtconfig.h。

2.15.8.Kconfig文件详解2

本节进一步解释Kconfig中配置项的细节,如depends、select等关键字的作用。

2.15.8.1、depends的含义

(1)depends中文意思是“取决于”或者“依赖于”,所以depends在这里的意思是:本配置项依赖于另一个配置项。如果那个依赖的配置项为Y或者M,则本配置项才有意义;如果依赖的哪个配置项本身被设置为N,则本配置项根本没有意义。
(2)depends项目会导致make menuconfig的时候找不到一些配置项。所以你在menuconfig中如果找不到一个选项,但是这个选项在Kconfig中却是有的,则可能的原因就是这个配置项依赖的一个配置项是不成立的。
(3)depends并不要求依赖的配置项一定是一个,可以是多个,而且还可以有逻辑运算。这种时候只要依赖项目运算式子的裸机结果为真则依赖就成立。

2.15.8.2、help

(1)帮助信息,告诉我们这个配置项的含义,以及如何去配置他。

2.15.8.3、Kconfig和.config文件和Makefile三者的关联

(1)配置项被配置成Y、N、M会影响.config文件中的CONFIG_XXX变量的配置值。
(2)这个.config中的配置值(=y、=m、没有)会影响最终的编译链接过程。如果=y则会被编入(built-in),如果=m会被单独连接成一个ko模块,如果没有则对应的代码不会被编译。那么这么是怎么实现的?都是通过makefile实现的。
(3)obj-$(CONFIG_DM9000) += dm9000.o
如果CONFIG_DM9000变量值为y,则obj += dm9000.o,因此dm9000.c会被编译;如果CONFIG_DM9000变量未定义,则dm9000.c不会被编译。如果CONFIG_DM9000变量的值为m则会被连接成ko模块(这个是在linux内核的Makefile中定义的规则)

总结:把menuconfig中的菜单项、Kconfig中的配置项、.config中的一行、 Makefile中的一行,这4个东西结合起来理解,则整个linux内核的配置体系就明了了。






以上是关于kconfig反向依赖的主要内容,如果未能解决你的问题,请参考以下文章

Kconfig 和 Kbuild

Kconfig 和 Kbuild

Kconfig 和 Kbuild

转:Kconfig语法

Kconfig基本语法

转:Kconfig语法