当前位置:   article > 正文

内核映像的形成——prepare和scripts目标_scripts prepare

scripts prepare

2.2.3 preparescripts目标

上一节我们找到了整个KBuild体系的第一个目标,根据是否进行了编译配置而分别是385行的scripts_basic949行的include/config/kernel.release。更重要的是,通过第一个目标的寻找,我们把KBuild体系的整个顶层Makefile文件脉络梳理了一遍,这对我们研究vmlinux的形成及其重要。下面我们就从第一个目标开始,对编译配置后make的整个过程来过一遍。

 

949行,第一个目标:

949 include/config/kernel.release: include/config/auto.conf FORCE

950        $(Q)rm -f $@

951        $(Q)echo $(kernelrelease) > $@

 

执行的命令很简单,删除旧的kernel.release,新建一个kernel.release并把kernelrelease变量的值转移标准输出,写入该文件:

358 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

948 kernelrelease = $(KERNELVERSION)$(localver-full)

 

第一个目标完成后,来到966行的prepare3目标:

966 prepare3: include/config/kernel.release

967 ifneq ($(KBUILD_SRC),)

968        @$(kecho) '  Using $(srctree) as source for kernel'

969        $(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then /

970               echo "  $(srctree) is not clean, please run 'make mrproper'";/

971               echo "  in the '$(srctree)' directory.";/

972               /bin/false; /

973        fi;

974 endif

 

没有问题,不会去执行的,因为$(KBUILD_SRC)是空的。所以来到977行:

977 prepare2: prepare3 outputmakefile

 

我们看到prepare2什么命令也不执行,但它除了prepare3还有个依赖outputmakefile

396 outputmakefile:

397 ifneq ($(KBUILD_SRC),)

398        $(Q)ln -fsn $(srctree) source

399        $(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile /

400

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/80772
推荐阅读
相关标签
  

闽ICP备14008679号