我们知道对于Linux内核来讲Kconfig和Makefile是比较重要的两个文件。目录中的Kconfig文件的作用是增加关于新的源代码的编译配置选项,而Makefile则是文件中新的源代码的编译内容选项。接下来小编就来聊聊这两个文件的一些特性。
Kconfig
Kconfig是一个文本形式的文件,其中主要作用是在内核配置的时候,作为配置选项。典型的内核配置选项如下所示:
menu "Network device support"
config NETDEVICES
bool "Enable Net Devices"
depends on NET
default y
help
在这个例子中我们可以看到bool的单词,指的的是配置选项的的类型,对Kconfig来讲类型包括bool、tristate、string、hex和int,在这其中tristate和string是两种基本类型,其他的类型是基于这两种生成的。例子里面的depend on指的是依赖关系,也就是Network device support对NET的依赖,会被加载到配置选项NETDEVICES的依赖列表中。
Makefile
Makefile的作用就是决定哪些内容要作为模块编译,哪些要编译并链接至内核。比如obj-y += sunny.o就是要将sunny.c或者sunny.s文件编译得到sunny.o并且链接近内核中,obj-m += sunny.o代表该文件编译成模块形式,obj-n += sunny.o目标不会被编译。对于多模块编译的时候可以使用模块名加-y组成。比如:
obj-$(CONFIG_EXT1_FS) += ext1.o
ext1-y := dir.o inode.o super.o
例子中的美元符号的代表的是括号与符号是个整体,它的值可以是y、m等。
标签: makefile