加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux--menuconfig

发布时间:2020-12-13 23:45:22 所属栏目:Linux 来源:网络整理
导读:|--linux内核中Makefile,Kconfig,.config的关系 (1)三者的作用 简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜 Makefile:一个文本形式的文件,编译源文件的方法。 Kconfig:一个文本形式的文件,内核的配置菜单。 .config:

|--linux内核中Makefile,Kconfig,.config的关系

  (1)三者的作用

    简单来说就是去饭店点菜:Kconfig是菜单,Makefile是做法,.config就是你点的菜

    Makefile:一个文本形式的文件,编译源文件的方法。

    Kconfig:一个文本形式的文件,内核的配置菜单。

    .config:编译所依据的配置。

(2)三者的语法

    |--Makefile

    目标定义:目标定义就是用来定义哪些内容要做为模块编译,哪些要编译链接进内核。

    直接编译:

      obj-y ?+= hello.o

      表示要由hello.c或者hello.s文件编译得到hello.o并链接进内核

      而更常见的做法是根据.config文件的CONFIG_ 变量来决定文件的编译方式 :

    条件编译:

      obj-$(CONFIG_HELLO) += hello.o

      obj-m则表示该文件要作为模块编译。

      除了y,m以外的obj-x形式的目标都不会被编译。

|-- Kconfig

类型定义:?

    每个config菜单项都要有类型定义: bool布尔类型、 tristate三态(内建、模块、移除)、
    string字符串、 hex十六进制、integer整型。?
  eg:?
    config HELLO_MODULE?
    bool "hello test module"?
    bool 类型的只能选中或不选中,显示为[ ];

?   tristate类型的菜单项多了编译成内核模块的选项,显示为< >,
    假如选择编译成内核模块,则会在.config中生成一个 CONFIG_HELLO_MODULE=m的配置,
    假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.
    hex十六进制类型显示为( )。

目录层次迭代?
    在Kconfig中有类似语句:source"drivers/usb/Kconfig"?
    用来包含(或嵌套)新的Kconfig文件,这样便可以使各个目录管理各自的配置内容,
    使不必把那些配置都写在同一个文件里,方便修改和管理。

?配置选项之间的依赖关系:
?   depend on:某选项依赖于另外一个选项生成
?   select ? :反向依赖关系,该选项选中时,同时选中select后面定义的那一项
?   requie
?  默认值: default(默认y/n/m等值)
  ?输入提示:prompt
?  帮助信息:help

|--.config

  内核编译参考文件

  修改方式:

    (1)??make menuconfig

    (2)??make xxx_defconfig

    (3)??直接修改
  !注意如果直接修改,不一定会生效,因为一些配置可能存在依赖关系,
  make的时候会根据依赖关系进行规则的检查,不推荐直接在.config进行修改。

?

|--总结

  输入命令make menuconfig修改相关配置

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读