Q:
对make ARCH=arm
menuconfig命令感到很奇怪,因为在一级目录下的Makefile中找不到menuconfig这个标号,我想是在子目录下的Makefile中
有,但是我grep发现只有scripts文件家下的Makefile里才有menuconfig的标号,难道我们make ARCH=arm
menuconfig实际是执行的scripts下的Makefile脚本?
其实问menuconfig的问题是我对往内核里加驱动的方式有一点疑惑,如果ARCH=arm,那第一层的内核配置Kconfig就是在
arch/arm/下面的Kconfig,在这个Kconfig里会把drivers下面的一个个文件夹下的Kconfig作为source加进来,而
drivers下面就有一个总的Kconfig,里面就已经把这些Kconfig作为source
包含了,为什么不直接把那个drivers下的Kconfig包含到arch/arm/下面的Kconfig呢?如果像现在这样,make
ARCH=arm
menuconfig完全用不到drivers目录下的那个Kconfig,那drivers目录下的那个Kconfig什么时候用的?只有在非交叉编译
的时候?如果是交叉编译,那这个drivers/Kconfig就是摆设?
A:
1.内核构建分两块,配置和构建,先要把配置系统建起来然后去构建内核。scripts
目录下的文件是用于配置系统构建的程序源文件。在一级Mafile中有*config目标,它代表所有和配置有关的目标,这个目标的动作就是进入
scripts目录去建配置系统
,根据不同的用户config方式(text,menu, x,qt,gtk,等)提供给用户不同的配置接口。
2.在x86平台下包含driver/Kconfig,其他平台有自己的device driver
菜单引入driver下各子目录的菜单
阅读(4266) | 评论(0) | 转发(0) |