在linux源码的每个目录下,几乎包含了Kconfig,Makefile两个文件。这两个文件是为了控制内核的配置与编译。例如,个人写的驱动程序要加入内核,就需要修改这两个文件。
一、原理流程:
Kconfig:
每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这 个.config,就知道了用户的选择。这个内容说明了,Kconfig就是对应着内核的每级配置菜单。
如果在顶层的Makefile的ARCH,配成了ARCH=mips。那么在make menuconfig 的时候接着去解析第一个Kconfig是arch/mips/Kconfig。从而形成了make menuconfig 产生的最开始菜单。
Makefile:
Makefile 会跟据.config所配置的宏是y,n,m选项进行编译。形如:
obj-$(CONFIG_FOO) += foo.o
CONFIG_FOO的值在.config中,值为y,表示编译进去内核,值为m,表示以模块的方式编译。
二、Makefile
1、编译目标与编译方式:
驱动有两种方式加入内核:一是编译进去内核,二是以模块的加载。
例如:
obj-y += test.o
意思为编译test.c文件,编译成test.o文件,并链接进去内核。
Obj-m += test.o
意思位编译test.c文件,编译成test.o文件,但是作为模块编译。
内核一般采用的方式是根据.config文件的CONFIG_变量来确定文件的编译方式。如:
obj-$(CONFIG_ISDN) += isdn.o
那么要看.config文件中CONFIG_ISDN的值。如果值为y。相当于:
ojb-y += isdn.o
其他的类似。
注意:在Kconfig中,关键字co
一、原理流程:
Kconfig:
每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这 个.config,就知道了用户的选择。这个内容说明了,Kconfig就是对应着内核的每级配置菜单。
如果在顶层的Makefile的ARCH,配成了ARCH=mips。那么在make menuconfig 的时候接着去解析第一个Kconfig是arch/mips/Kconfig。从而形成了make menuconfig 产生的最开始菜单。
Makefile:
Makefile 会跟据.config所配置的宏是y,n,m选项进行编译。形如:
obj-$(CONFIG_FOO) += foo.o
CONFIG_FOO的值在.config中,值为y,表示编译进去内核,值为m,表示以模块的方式编译。
二、Makefile
1、编译目标与编译方式:
驱动有两种方式加入内核:一是编译进去内核,二是以模块的加载。
例如:
obj-y += test.o
意思为编译test.c文件,编译成test.o文件,并链接进去内核。
Obj-m += test.o
意思位编译test.c文件,编译成test.o文件,但是作为模块编译。
内核一般采用的方式是根据.config文件的CONFIG_变量来确定文件的编译方式。如:
obj-$(CONFIG_ISDN) += isdn.o
那么要看.config文件中CONFIG_ISDN的值。如果值为y。相当于:
ojb-y += isdn.o
其他的类似。
注意:在Kconfig中,关键字co