linux中kernel编译所涉及的Makefile,Kconfig,.config,kbuild makefiles文件
阅读数:168 评论数:0
跳转到新版页面分类
Linux
正文
一、概述
makefile文件包含一些规则,告诉make工具编译哪些文件以及怎样编译这些文件。
配置文件.config |
是在进行内核配置后生成的中间产物。 是通过make menuconfig 命令编译内核产生的与内核地相关的文件,这个文件的产生实际上是由kconfig文件所决定的, |
顶层makefile |
通过读取配置文件,引入或递归处理子层makefile文件、scripts/Makefile.*等其它配置文件,最终实现整个内核的构建工作。 |
script/Makefile.* |
是一组定义公共编译规则相关的文件,这些文件定义了编译所需的公共规则及定义, 其中Makefile.build定义了.lib builtin.o以及目标文件.o文件的生成规则 ,内核目录及文件的编译链接规则也会部由Makefile.build决定。 Makefile.clean文件则定义了删除目标文件的相关规则。 Makefile.lib文件定义了内核编译的相关变量。 |
子Makefile |
定义当前目录下的子目录、文件以及目标文件之间的依赖关系,它们被Makefile.build文件调用。 |
arch/$(Arch)/Makefile |
是与CPU相关的Makefile文件。 |
二、kconfig文件:
其中主要作用是内核配置项的选择
当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig
Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”
1、config entry
config TMPFS_POSIX_ACL
bool "Tmpfs POSIX Access Control Lists"
depends on TMPFS
select GENERIC_ACL
help
POSIX Access Control Lists (ACLs) support permissions for users and
groups beyond the owner/group/world scheme.
To learn more about Access Control Lists, visit the POSIX ACLs for
Linux website <http://acl.bestbits.at/>.
If you don't know what Access Control Lists are, say N.
config是关键字,表示一个配置项的开始,紧跟着的TMPFS_POSIX_ACL是配置项的名称。
bool表示配置项的类型(bool:y和n;tristate:y、n和m;string:字符串),bool后的字符串是提示信息(即配置界面上显示的字符串)。
三、kbuid文件
每一个模块都是单独被编译然后再链接的,所以这一种kbuild makefile几乎在每个模块中都存在.在这些模块文件(子目录)中,也可以使用Kbuild文件代替Makefile,当两者同时存在时,优先选择Kbuild文件进行编译工作,只是用户习惯性地使用Makefile来命名。