前言:
本文是根據嗶哩嗶哩網站上“arm(iMX6U)Linux系統移植和根文件系統構鍵篇”視頻的學習筆記,在這里會記錄下正點原子 I.MX6ULL 開發板的配套視頻教程所作的實驗和學習筆記內容。本文大量引用了正點原子教學視頻和鏈接中的內容。
引用:
正點原子IMX6U倉庫 (GuangzhouXingyi) - Gitee.com
《【正點原子】I.MX6U嵌入式Linux驅動開發指南V1.5.2.pdf》
正點原子資料下載中心 — 正點原子資料下載中心 1.0.0 文檔
正點原子imx6ull-mini-Linux驅動之Linux I2C 驅動實驗(21)-CSDN博客
正文:
本文是 “Arm(iMX6U)Linux系統移植和根文件系統構鍵篇--5.3講u-boot頂層Makefile里 xxx_defconfig的執行過程分析實驗。本節將參考正點原子的視頻教程和配套的正點原子開發指南文檔進行學習。
0. 概述
1.U-boot頂層Makefile里?xxx_defconfig的執行過程
1.1 u-boot編譯步驟
編譯u-boot時三個步驟
make ARCH=arm distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-? xxx_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j 8
第一條命令 'make distclean' 清理所有的上一次編譯生成中間文件,把項目目錄清理干凈。
第二條命令 'make xxx_defconfig' ,針對開發板硬件型號進行配置,例如,配置指令集,配置cpu型號,配置開發板,配置開發板外圍硬件等,最后在 u-boot目錄下生成 '.config' 配置文件。
第三條命令‘make -j 8' 指定使用多個8線程編譯出uboot,這一步編譯u-boot的時引用上面生成的 ".config" 配置文件,根據配置來編譯源碼。
正點原子的本視頻小節,通過 u-boot/ 目錄下的頂層Makefile文件
u-boot/Makefile
來分析編譯時的第二條命令生成配置文件 'xxx_deconfig' 的執行過程。?
make xxx_defconfig
?1.2 u-boot 頂層Makefile執行 xxx_deconfig 過程
在u-boot頂層Makefile(u-boot/Makefile,以下提到uboot頂層Makefile都是指這一個文件)中有如下的 Target,使用makefile語法中的通配符 "%","%config" 目標匹配所有的 ’make xxxconfig' 的make命令。
%config:?
使用Makefile語法中的通配符 "%", "%config"匹配了所有的 "xxxconfig"的make編譯目標,當然我們執行的 'make xxx_defconfig‘ 編譯目標也匹配 uboot頂層Makefile中的這一個目標target,執行uboot頂層makefile里的依賴關系和編譯命令。
config: scripts_basic outputmakefile FORCE$(Q)$(MAKE) $(build)=scripts/kconfig $@%config: scripts_basic outputmakefile FORCE$(Q)$(MAKE) $(build)=scripts/kconfig $@
從uboot頂層Makefile看到,執行 "xxx_defconfig"命令時,"xxx_defconfig"目標依賴于兩個前置依賴,”scripts_basic"和"outputmakefile"。(FORCE是makefile的一個慣常的使用方法,使用FORCE表明依賴于FORCE的目標在makef中總是執行。)
config: scripts_basic outputmakefile FORCE
?接下來分析一下?”scripts_basic"和"outputmakefile" 在 uboot頂層makefile的執行過程,