Kconfig和Makefile文件语法概述

Kconfig:内核配置脚本文件,每个内核配置文件中的config都在make menuconfig中对应一个相应的菜单选项。

基本语法:

1、菜单入口

示例:
config MODVERSIONS
    bool "Set vertion information on all module symbols"
    depends on MODULES
    default n
    help
        Usually, modules have to be recompiled whenever you switch to a new kernel. ...


“config”关键字定义新的配置选项,之后几行定义了该配置选项的属性。属性包括类型、数据范围、输入提示、依赖关系(及反向依赖关系)、帮助信息和默认值等。类型:bool、tristate、string、hex、int。(tristate和string是基本类型,其他类型基于基本类型)输入提示:prompt <prompt [if <expr>]>依赖关系:depends on (或requires) <expr> 多个依赖关系间用"&&"间隔反向依赖关系:select <symbol> [if <expr>]depends能限定symbol的上限,即如果A依赖B,则B被配置为Y时,A可以为Y/M/N;B被配置为M时,A可以为M/N;B在被配置为N的情况下,A只能为N。select能限定symbol的下限,若A反向依赖于B,则A的配置值会高于或等于B(与depends相反)。默认值:default <expr> [if <expr>] 一个选项可以有任意个默认值,但只有第一个被定义的值是可用的。帮助信息:help(或---help---) 开始 ...... 结束2、菜单结构示例1:
menu "Network device support"
    depends on NET
config NETDEVICES
    ...
endmenu
所有config选项都成为menu的子菜单,而且集成父菜单的依赖关系。示例2:
config MODULES
    bool "Enable loadable module support"


config MODVERSIONS
    bool "Set version information on all module symbols"
    depends on MODULES


通过依赖关系创建菜单,复选项为N,子选项不可见;复选项为Y,子选项可见。


=======================================================================================================================


Makefile:模块编译文件


基本语法:
1、目标定义:用来定义哪些内容要作为模块编译,哪些要编译并连接进内核
obj-$(CONFIG_ISDN) += isdn.o
根据.config文件的CONFIG_变量来决定文件的编译方式


2、多文件模块定义
obj-$(CONFIG_EXT2_FS) += ext2.o
ext2-y := balloc.o bitmap.o
ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o
模块名为ext2,由balloc.o和bitmap.o最终连接生成ext2.o直至ext2.ko,是否包括xattr.o根据内核配置情况。


3、目录层次的迭代
obj-$(CONFIG_EXT2_FS) += ext2/
当CONFIG_EXT2_FS的值为y或m时,将会把ext2目录列入向下迭代的目标中,具体ext2目录下的文件是要作为模块编译还是链接入内核由ext2目录下的Makefile决定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值