日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uboot主Makefile分析

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uboot主Makefile分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

version表示主版本號? ? patchlevel表示補丁版本號? ? sublevel表示次版本號? ? extreversion表示附加版本信息

U_BOOT_VERSION=1.3.4表示最終的版本號

$(obj)前面沒有定義,并不表示obj為空。在makefile中,=表示整個文件中最后賦值的結果,因此obj具體值還要取決于后面的程序。總之,VERSION_FILE表示一個文件。

?

?

?

uname -m表示獲取主機cpu型號,sed -e表示可以在同一行里可以執行多條sed命令,sed s/i.86/i386/ string表示將string中出現的i.86替換成i386。

uname -s表示獲取主機操作系統,tr '[:upper:]' '[:lower:]'表示將所有大寫字母替換成小寫字母。sed -e 's/\(cygwin\).*/cygwin/')表示將cygwin.*都替換成cygwin。

最終,導出環境變量為HOSTARCH=x86_64,HOSTOS=linux。

?

?

編譯時make -s,-s會作為MAKEFLAGS變量自動傳給makefile。如果MAKEFLAGS中包含字母s,則XECHO=echo執行非靜默編譯;否則,執行靜默編譯。

?

?

如果編譯時,命令中加入了O選項,即make O=/tmp,則將BUILD_DIR=/tmp。在實際操作中,可以有兩種賦值BUILD_DIR的方式,第一種是export BUILD_DIR=/tmp/build然后make,第二種是make O=/tmp/build all。從代碼中,可以明確地知道,O選項的優先級更高。

如果BUILD_DIR被定義,則創建BUILD_DIR文件夾,并獲取完整路徑。

導出TOPDIR SRCTREE OBJTREE?MKCONFIG?REMOTE_BUILD?obj src等一系列環境變量。

其中,TOPDIR=SRCTREE=src;OBJTREE=obj;如果SRCTREE和OBJTREE不相等,則REMOTE_BUILD=1。

MKCONFIG?:= $(SRCTREE)/mkconfig。

于是乎,之前遺留下來的問題解決了,VERSION_FILE的表示的文件已經確定下來。

?

?

include表示,執行include/config.mk文件。最終導出ARCH CPU BOARD VENDOR SOC這幾個環境變量。include/config.mk文件并不是源碼自帶的,而是配置過程中生成的。

?

?

我們在編譯uboot之前會先進行配置,比如我手里的開發板是x210,在編譯之前會先使用make x210_sd_config進行配置。

前面已經將MKCONFIG作為環境變量導出,MKCONFIG=$(SRCTREE)/mkconfig,即當前目錄下的mkconfig。然后將x210_sd_config中的_config替換成空,最終會得到mkconfig?x210_sd?arm s5pc11x x210 samsung s5pc110。

首先,運行unconfig取消先前配置,因此在每次配置時候不需要特意的進行make unconfig。

其次,運行mkconfig?x210_sd?arm s5pc11x x210 samsung s5pc110,進行相關配置。

最后,運行echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/x210/config.mk,進行重定位地址配置。

?

?

?

?

下面,我們先來看下主目錄下的mkconfig文件

從中可以看出,這段程序什么也沒有干。

?

?

最終,BOARD_NAME=x210_sd,并打印出Configuring for x210_sd board...

?

?

首先將當前目錄切換到include中,然后建立軟鏈接asm -> asm-arm。

建立軟鏈接asm-arm/arch->asm-arm/arch-s5pc11x。

建立軟鏈接regs.h->s5pc110.h、asm-arm/arch->asm-arm/arch-s5pc11x

建立軟鏈接asm-arm/proc->asm-arm/proc-armv

?

?

將如下信息寫入include/config.mk

ARCH=arm?? ?
CPU = s5pc11x?? ?
BOARD = x210?? ?
VENDOR = samsung?? ?
SOC = s5pc110

?

?

創建include/config.h,并向其中寫入#include <configs/x210_sd.h>

?

?

?

到此,config.mk已經執行完畢

最終導出的環境變量為ARCH=arm、CPU=s5pc11x、BOARD=x210、VENDOR=samsung、SOC=s5pc110

?

?

......

定義交叉編譯工具鏈的前綴,并導出交叉編譯工具鏈的前綴。

?

?

加載主目錄下的config.mk文件,這個文件中包含了很多的配置,包括板子的一些配置和編譯器相關配置。這個展開內容非常多,也不是很有必要深入分析,不是太影響uboot的移植。

?

?

再往后看,都是在添加目標文件和庫文件

?

?

一直往后看,開始看到編譯流程,我們只要搞清楚配置的過程,編譯的流程不是太需要關心

?

至此,主Makefile和mkconfig腳本已經大致結束了。

總結

以上是生活随笔為你收集整理的uboot主Makefile分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。