以前面内核编译配置的某一个项为例,之前生成的那个.config配置文件。
CONFIG_DM9000=y
.config文件里的东西,在
- 子目录Makefile,
- linuc C源码,
- include/config/auto.conf,
- include/linux/autoconf.h等都有用到,
在头文件include/linux/autoconf.h中无论之前的.config里CONFIG_DM9000是M/Y,这里都是1
#define CONFIG_BINFMT_AOUT 1
#define CONFIG_DM9000 1
#define CONFIG_SOLARIS_X86_PARTITION 1
而y和M的体现在子目录的Makefile中体现,obj-y += xxx.o
将被编译到内核, obj-m += yyy.o
编译成.ko可被加载的模块
obj-$(CONFIG_SMC911X) += smc911x.o
obj-$(CONFIG_DM9000) += dm9dev9000c.o
include/config/auto.conf
和include/linux/autoconf.h
都来自于.config
配置内核时生成.config文件,make uImake时.config会自动创建auto.conf(被顶层Makefile包含,子目录下Makefile使用)和autoconf.h(被源代码使用)。
最后编译时会根据子目录的Makefile把对应的.c编译成.o或.ko