uboot構建框架4-make *defconfig命令的過程追蹤

引入

還記得我們在文章《uboot構建框架1-總覽》裏面提到的米爾開發板uboot編譯三個命令中的的第二個嗎?就是:

sunke@droresrv:~/work/MYiR-iMX-Uboot$ make mys_imx6ull_14x14_nand_defconfig

道理還是一樣的

在文章《make menuconfig命令的過程追蹤》裏面,我們追蹤了menuconfig的執行流程。上述命令跟menuconfig還是有點相像的,目標都以config結尾。還記得我們提到過,以config結尾的目標,有個共同的入口嗎?算了,不想讓你們到處跳轉了,這裏再複製一次,看好了:

 %config: scripts_basic outputmakefile FORCE
        $(Q)$(MAKE) $(build)=scripts/kconfig $@

怎麼樣,就是menuconfig的那個入口,對於這個命令,我們不妨再次展開在這裏:

$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.build obj=scripts/kconfig mys_imx6ull_14x14_nand_defconfig

這個比menuconfig要噁心一些,又臭又長。但是道理都是一樣的,去到了Makefile.build,並且使用了兩個目標:obj和mys_imx6ull_14x14_nand_defconfig,我們打開Makefile.build,在其59行,會展開爲:

include ./scripts/kconfig/Makefile

打開./scripts/kconfig/Makefile,我們會看到第113行,有個模式規則:

%_defconfig: $(obj)/conf
    $(Q)$< $(silent) --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

看到沒,這個規則的目標匹配mys_imx6ull_14x14_nand_defconfig。但是跟menuconfig不同的是,依賴不再是mconf,而是conf。這個conf和mconf一樣,也是個C語言程序,本機編譯,運行在本機。具體使用方法可以參考--help選項。我們這裏將這條命令展開,如下:

@scripts/kconfig/conf  --defconfig=arch/../configs/mys_imx6ull_14x14_nand_defconfig Kconfig

如上,最終調用了conf程序,使用了--defconfig參數選項和Kconfig命令行選項。這個conf程序,雖然我們沒有展開分析,但是猜測應該和mconf類似,無非是conf沒有圖形界面,會根據指定的配置文件輸入進行操作,最後生成的標準的.config等結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章