makefile在内核配置时作为选项

2020-11-17 09:30:14

我们知道对于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等。

关闭