• linux 内核文件中Makefile、kconfig、.config的关系(SDK结构)


      linux 内核源码的管理是非常科学的,在linux内核源码的顶层目录下,分配了相应的目录,在对应目录下,代表一些功能或者属性的集群,这样就实现了模块化,便于管理。比如arch目录与平台架构相关,include目录存放着大量的内核头文件,drivers目录存放着各种驱动代码,比如显卡、网卡、USB总线、PCI总线等;kernel目录存放着支持体系结构特有的诸如信号量处理和SMP之类特征的实现,mm目录存放着体系结构特有的内存管理程序,然而在各个子目录下,又会进行细分。比如arch目录就存在和X86架构相关的目录X86和ARM架构相关的目录arm,与MIPS目录相关的目录mips等等。

      对于一棵非标准树,还是有办法将其遍历的,只是算法比较复杂。在Linux源码的这棵树,就是通过Kconfig文件建立各层子目录之间的连接,通过Makefile文件来选择各个目录下的对应的文件是否被编译,而.config文件就像作为控制总台控制着Makefile文件去编译指定的长须代码文件(主要是c和汇编),而这一切控制关系是由Kconfig文件建立起来的。

    Linux---kconfig文件的简述

      内核源码树目录下都有两个文件Kconfug和makefile。分布到各个目录的kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig,从Kconfig读出菜单用户选择后保存到.config的内核配置文件中。

      从以上可以得出,Kconfig就是对应着内核的配置菜单。如果想要添加新的驱动到内核源码中,可以修改Kconfig,这样就可以选择这个旭东,如果想使这个驱动被编译,要修改makefile。

    Kconfig的格式简介

      Kconfig按照一定格式来写,menuconfig程序可以识别这种格式,然后从中提取有效信息,组成menuconfig中的菜单项。menuconfig表示菜单(本身属于一个菜单中的项目,但是它又有子菜单项目)。config表示菜单中的一个配置项(本身并没有子菜单下的项目)。一个menuconfig后面跟着所有config项就是这个menuconfig的子菜单,这就是Kconfig表示的目录关系。

       NETDEVICES:menuconfig或者config后面空格隔开的大写字母表示的类似于NETDEVICES的就是这个配置项配置项名称,这个字符串前面添加CONFIG_就构成".config”文件中配置项的名字。

      source:内核源码目录中每一个Kconfig都会用Kconfigsource引入其所有子目录下的Kconfig,从而保证所有的Kconfig都被包含进menuconfig中。这也就说明,如果你在Linux内核中添加了一个文件夹,一定要在这个文件夹下面创建一个kconfig文件,然后在这个文件夹的上一层目录的Kconfig文件中用source引入转让工人文件夹中的Kconfig文件。

      tristate:意思是三态(三种状态,Y,N,M三种选择方式),意思是这个配置项可以被三种选择。

      bool:要么真要么假(对应Y和N),意思是这个配置项只能被两种选择。

      depends:意思是本配置项依赖于另一个配置项,如果这个配置项为Y或者M,则本配置项才有意义,如果依赖的哪个配置项本身被设置成N,则本配置根本没有意义。

      depends项会导致make menuconfig的时候找不到找不到一些配置项,所以如果在menuconfig中如果找不到一个选项,但是这个选项在kconfig中却是有的,则可能这配置项依赖的一个配置项是不成立。

      select:表示depends on 的值有效时,下面的select也会成立,将相应的选项选上。

      default:表示depends on的值有效时,下面的default也会成立,将相应的选项选上,有三种选项,分别对应于y,n,m。

      n:表示默认不编译。

      y:表示默认编译进内核。

      m:表示默认编译为模块。

  • 相关阅读:
    [SAM学习笔记]
    CF513G3 Inversions problem
    AtCoder Beginner Contest 204
    [SDOI2017]序列计数
    CF993E Nikita and Order Statistics
    多项式板子
    多项式杂学笔记
    「雅礼集训 2017 Day5」远行
    Mysql备份恢复工具
    个人选择上网的流量方式对比
  • 原文地址:https://www.cnblogs.com/RanWhoo/p/13466895.html
Copyright © 2020-2023  润新知