Linux kernel 分析之十五:kbuild系统-make menuconfig

理解了make bzImage的过程,理解了整个kbuild的结构和运行机制,make menuconfig的过程就很容易理解了。
先看/usr/src/linux/Makefile。可以找到:452 %config: scripts_basic outputmakefile FORCE453         $(Q)$(MAKE) $(build)=scripts/kconfig $@
%config是通配符,所有以config结尾的目标(menuconfig xconfig gconfig)都采用这个规则。所以make menuconfig在进行一些准备工作如make scripts_basic等操作后,最终会运行
$(Q)$(MAKE) $(build)=scripts/kconfig menuconfig其中$@指要生成的目标文件,这里指伪目标menuconfig。接下去调用的是: scripts/kconfig/Makefile013 menuconfig: $(obj)/mconf
014         $(Q)$(MAKE) $(build)=scripts/lxdialog015         $< arch/$(ARCH)/Kconfig
082 hostprogs-y     := conf mconf qconf gconf kxgettext083 conf-objs       := conf.o  zconf.tab.o084 mconf-objs      := mconf.o zconf.tab.o085 kxgettext-objs  := kxgettext.o zconf.tab.o
这里可以看到最终执行的是scripts/kconfig/mconf arch/i386/Kconfig其中$<代表“起因”,也就是scripts/kconfig/mconf
该程序并不属于内核,而是一个用户态程序。Linux 源代码中这一类程序还有很多。如在scripts/kconfig/目录下就有mconf,gconf,qconf等等。它们用来执行内核的配置工作。
又如在arch/i386/boot/tools/中有个可执行程序叫build,它用来把bootsect(引导扇区) ,setup(辅助程序)和vmlinux.bin(压缩内核)拼接成bzImage。
scripts/kconfig/mconf这个程序采用了ncurses类库。这是一个在文本界面下进行画图操作类库。由于要适应不同平台,源代码中的mconf不是预编译好的elf可执行文件,而是在使用时才去编译生成。这使用户在运行make menuconfig时要依赖ncurses的开发包。
arch/i386/Kconfig,准确地说是各个Kconfig文件记录了各个内核配置的选项。我们在make menuconfig或者make xconfig时显示的菜单项和帮助信息,都是从这个文件中读出来的。
到此,我们对平时使用的make menuconfig命令的执行流程应该有了一个大概的印象了吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值