歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> U-Boot 頂層Makefile解析

U-Boot 頂層Makefile解析

日期:2017/3/1 9:52:21   编辑:Linux編程

u-Boot -Makefile(一) 聲明 : 以下解析大部分來自網絡大神之手 所以可以放心閱讀 Good luck

VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 6
EXTRAVERSION =
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
#版本號定義
VERSION_FILE = $(obj)include/version_autogenerated.h #不是很理解這句話的意思
# 舉例理解$(obj) obj := a.o b.o $(obj)指的是obj變量的值 即為a.o b.o
# makefile中的$(xxx)跟shell中的是不一樣的

HOSTARCH := $(shell uname -m | \
sed -e s/i.86/i386/ \
-e s/sun4u/sparc64/ \
-e s/arm.*/arm/ \
-e s/sa110/arm/ \
-e s/powerpc/ppc/ \
-e s/macppc/ppc/)
# uname 命令將正在使用的操作系統名寫到標准輸出中
# -m 顯示系統運行的硬件機器ID號
# '| ' 為linux中的管道處理符 pipe 而 '\' 自然就是換行符咯
# sed -e 後面跟著一串(shell?)命令腳本 表示將i.86替換成i386 這樣執行一套程序下來就知道硬件的體系結構了 如何知道的?
# 我猜應該會有某個變量用來標記 是哪種硬件體系的吧 只要對應的體系結構名被修改後就標記它 得以知道是哪種結構?
# i386
# sparc64
# arm -ARM
# ppc -Power PC


##下面這句話的意思是定義變量HOSTOS,HOSTOS裡面存放的是主機安裝的,並且當前正在運行的操作系統
HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
sed -e 's/\(cygwin\).*/cygwin/')
#sed -e 's/\(cygwin\).*/cygwin/')
# 這一句的意思是檢測出主機安裝的,並且當前正在運行的操作系統名,並把這個系統名中的大寫字母轉換為小寫字母
# 然後在通過sed流編輯器匹配所有的,這個系統名中出現的"\(cygwin\).*"模式,然後再用"cygwin"模式替換。(用來處理"cygwin"環境下編譯的環境變量)
## 可以把shell腳本寫到makefile裡面,這是make中的shell function,相當於shell中的命令替換!
# uname -s 得到內核系統名稱即Linux
# tr '[:upper:]' '[:lower:]'把大寫變成小寫然後輸出(也就是將Linux--->linux Linux是通過管道得來的)(tr為shell command)

export HOSTARCH HOSTOS #導出變量HOSTARCH 和變量HOSTOS

# Deal with colliding definitions from tcsh etc.處理來自tcsh相互沖突的定義等等
VENDOR=
#VENDOR 是賣家、賣方的意思 這邊可以寫開發商名字吧

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/91159p2.htm

Copyright © Linux教程網 All Rights Reserved