关于Linux kernel中的config配置和makefile的组织
2013-06-03 22:45
344 查看
以前对linux kernel的编译有个大概的了解,内中的细节却没有花时间去研究。今天看到一篇关于linux kernel配置编译的解说,说的和自己理解的差不多,而且博主研究的也比我详细。故引用之,以便加深学习。
基于转载,当然也补充一点:make config是如何将多级目录中的kconfig囊括在一起的呢?这个要注意一个语法:source。
在多层目录中,主目录的kconfig文件会将次层多个文件或者module中的kconfig收集起来,以供上层目录kconfig使用。比如下面/driver目录中的kconfig:
# drivers/Kconfig
menu "Device Drivers"
source "drivers/base/Kconfig"
source "drivers/connector/Kconfig"
source "drivers/mtd/Kconfig"
------------------以下转载----------------------------
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决定。
基于转载,当然也补充一点:make config是如何将多级目录中的kconfig囊括在一起的呢?这个要注意一个语法:source。
在多层目录中,主目录的kconfig文件会将次层多个文件或者module中的kconfig收集起来,以供上层目录kconfig使用。比如下面/driver目录中的kconfig:
# drivers/Kconfig
menu "Device Drivers"
source "drivers/base/Kconfig"
source "drivers/connector/Kconfig"
source "drivers/mtd/Kconfig"
------------------以下转载----------------------------
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决定。
相关文章推荐
- 关于s5pv210的配置、编译过程中相关文件的分析(Makefile、config.mk、mkconfig)
- linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- 配置文件的生成,关于“make menuconfig”
- 关于Web.Config文件中的节配置
- 关于VS2008中app.config数据库配置字符串的三种取法
- linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解-转
- 关于网站的config配置
- 关于用myeclipse在struts-config.xml中配置datasource的注意事项
- Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系
- Linux驱动基础开发 Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- linux驱动基础开发3——linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
- 关于Micro2440配置内核驱动模块make menuconfig的问题备忘
- 关于Spring中的<context:annotation-config/>配置
- 关于Spring中的<context:annotation-config/>配置
- 关于 sshd_config 配置文件 说明
- 关于 App.config文件出错,配置系统未能初始化。 问题解决方案
- 关于web.config里的deny配置
- 关于Spring中的<context:annotation-config/>配置