依据oplonu产品为例,着重解析编译过程
Kernel Version:linux2.6.21.5
SDK:https://github.com/DavionKnight/oplonu
执行编译脚本$ ./f23p-v1e-build
执行make f23pv1e
oplonu/make.rules:
进入$(KERNEL_DIR)/linux-2.6.21.5并执行make onu_respin_f23p_defconfig;
$(KERNEL_DIR)/linux-2.6.21.5/Makefile:
进入$(KERNEL_DIR)/linux-2.6.21.5/scripts/kconfig,执行 make onu_respin_f23p_defconfig;
$(KERNEL_DIR)/linux-2.6.21.5/scripts/kconfig/Makefile:
其中obj在$(KERNEL_DIR)/linux-2.6.21.5/Makefile中定义如下
objtree := $(CURDIR)
src := $(srctree)
obj := $(objtree)
(CURDIR 此变量代表 make 的工作目录。当使用“-C”选项进入一个子目录后,此变量将被重新赋值。总之,如果在
Makefile 中没有对此变量进行显式的赋值操作,那么它代表 make 的工作目录。我们也可以在 Makefile 为这个变量赋一个新的值。此时这变量将不再代表 make 的工作目录)
也就是在$(KERNEL_DIR)/linux-2.6.21.5/scripts/kconfig/的conf
$(Q)$< -D arch/$(ARCH)/configs/$@ arch/$(ARCH)/Kconfig
= ./conf -D arch/$(ARCH)/configs/onu_respin_f23p_defconfig arch/$(ARCH)/Kconfig
conf工具的功能大致与make config相同,将arch/$(ARCH)/configs/onu_respin_f23p_defconfig配置为默认配置
新建.config,将onu_respin_f23p_defconfig写入.config
(具体不分析conf工具,有源码感兴趣的可以自己研究)
配置部分到此结束