uboot主Makefile分析1
1、uboot_versionq確定(Makefile的24-29)
(1)uboot的版本號分為3個
VERSION:主版本號
PATCHLEVEL:次版本號
SUBLEVEL:再次版本號
EXTRAVERSION:另外附加的版本資訊
這4個用.分隔開構成了最終的版本號
(2)Makefile中版本號最終生成一個變數U_BOOT_VERSION,這個變數記錄了Makefile中配置的版本號。
(3)include/version_autogenerated.h檔案時編譯過程中自動生成的一個檔案,所以在未編譯源目錄下面找不到這個檔案,在編譯過後的uboot中就有了。它裡面的內容是一個巨集定義,巨集定義的值就是我們在Makefile中配置的uboot的版本號。
(4)驗證方法:自己修改Makefile中幾個Version的有關變數,然後重新編譯uboot,然後燒錄到sd卡,看uboot打印出來的版本資訊。看看變化是不是和自己一致。
2、HOSTARCH和HOSTOS
(1)直接在shell中執行uname -m得到i386,得到的值其實是你當前執行這個命令的電腦的CPU的版本號。
(2)shell中的|叫做管道,管道的作用就是把管道前面的運算式的運算輸出結果作為管道後面運算式的輸入。
(3)sed -e s/old/new/ 命令是如果命令列打印出old則將new替換old。
其中31-38行程式碼
HOSTARCH := $(shell uname -m |
sed -e s/i.86/i386/ #如果列印的是i.86則替換為i38664
sed -e s/sun4u/sparc64/ #如果列印的是sun4u則替換為sparc64
sed -e s/arm.*/arm/
sed -e s/sa110/arm/
sed -e s/powerpc/ppc/
sed -e s/ppc64/ppc/
sed -e s/macppc/ppc/)
其中41-42行程式碼
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | #打印出來的大寫字母改寫為小寫字母
sed -e 's/\(cygwin\).*/cygwin/') #打印出的如果是cywin.*則替換為cygwin