1. 程式人生 > >09課02節 u-boot-1.1.6分析之Makefile結構分析

09課02節 u-boot-1.1.6分析之Makefile結構分析

我們配置時 是make 100ask24x0_config

這條命令到底幹了什麼?現在分析一下

開啟原始碼目錄樹頂層的makefile


就相當於執行這條命令    @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL s3c24x0

1:MKCONFIG是什麼東西?MKCONFIG:= $(SRCTREE)/mkconfig      原始碼樹下面有一個mkconfig

2: $(@:_config=) 是什麼意思?

還依稀記得makefile手冊中的替換引用規則嗎?有個例子,反正我是看到過;

obj=$(srcfiles:%.c=%.o) 把只要是.c結尾的替換成.o檔案

這裡是一樣的道理,@是目標,也就是100ask24x0_config ,把_config用空格替換嘛;

所以$(@:_config=) 的結果就是100ask24x0

還不理解的話,就做個例子打印出來自己欣賞下嘛

100ask24x0_config : unconfig

@echo $(@:_config=)       

@代表目標嗎?我的記憶是[email protected]才代表目標吧; 做個實驗先

all:

@echo [email protected]    輸出all

@echo @      輸出@

@echo $(@)  輸出all    

基本退出[email protected]

和$(@) 是一樣的 都代表目標

所以make 100ask24x0_config  就相當於執行mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0

---

我們再來分析這條命令,我們把mkconfig這個指令碼檔案開啟;


   $#: 代表引數的個數  -gt 大於則為真

也就是判斷第一個引數(100ask24x0 )是不是-- -a -n ,我們都不是;所以這句話沒有什麼用


判斷BOARD_NAME有沒定義,如果定義了 就BOARD_NAME="S1" 不會執行;如果定義了;BOARD_NAME="S1"就不會執行

貌似跟C語言很相似;我們沒有定義; 所以會執行後面的;那$1是什麼,是100ask24x0 

所以BOARD_NAME=100ask24x0 


顯然不會退出

打印出這句話


在makefile 查詢

OBJTREE:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))   這句話的意思是如果定義了BUILD_DIR,OBJTREE=BUILD_DIR,否則=OBJTREE
SRCTREE:= $(CURDIR)

OBJTREE沒有人定義;所以上面的if不成立

會執行下面的

cd ./include
rm -f asm
ln -s asm-$2 asm    #建立一個連結檔案,ln -s asm-arm asm    asm指向asm-arm

相關推薦

0902 u-boot-1.1.6分析Makefile結構分析

我們配置時 是make 100ask24x0_config 這條命令到底幹了什麼?現在分析一下 開啟原始碼目錄樹頂層的makefile 就相當於執行這條命令    @$(MKCONFIG) $(@:_config=) arm arm920t 100ask24x0 NULL

“第09第2 u-boot分析Makefile結構分析學習筆記

                        --start-group lib_generic/libgeneric.a board/100ask24x0/lib100ask24x0.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a l

u-boot分析Makefile結構分析

我們分析一個檔案的時候,想知道它是什麼結構?是怎麼連結的,最好的方法就是分析它的makefile檔案。 之前說過u-boot配置、編譯; 為什麼知道先配置後編譯?原始碼中有個readme檔案; 先從makefile檔案中分析一下配置過程; 執行mak

u-boot啟動Makefile結構分析

先進行配置命令: make smdk2410_config 在Makefile檔案中: smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24

韋東山“第091 u-boot分析編譯體驗“學習筆記

Windows系統啟動過程,PC上電 => 進入BIOS(引導作業系統)=> windows => 識別C,D等的硬碟 => 執行應用程式 嵌入式系統啟動過程,上電 => bootloader(引導核心)=> LINUX => 掛

ERROR : arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression

今天在除錯rk3288的 uboot的 ./include/configs/rk_default_config.h檔案 我的本意是遮蔽掉uboot 的lcd驅動,然後我習慣用“//”用單行註釋雙斜槓註釋了一個巨集定義比如 //#define CONFIG_LCD 編譯後提示

u-boot.2012.10——mini2440(二、啟動流程分析)

我們 分享 默認 從數據 中斷 改變 處理 mini2440 https 參考資料:https://blog.csdn.net/suiyuan19840208/article/details/7239949 1、第一階段功能   * 硬件設備初始化   * 加載u-boot

無加密Spring Boot 2.0深度實踐核心技術篇分享

第1章 系列總覽 總覽 Spring Boot 2.0 深度實踐系列課程的整體議程,包括 Spring Boot 三大核心特性(元件自動裝配、嵌入式Web容器、生產準備特性)、Web 應用(傳統 Servlet、Spring Web MVC、Spri

[U-boot]uboot的版本下載和檔案結構

uboot版本下載地址 參考資料 1、版本號變化: 2008年8月及以前,按版本號命名:u-boot-1.3.4.tar.bz2(2008年8月更新) 2008年8月以後均按日期命名。目前最新版本:u-boot-2011.06.tar.bz2(2011年6月

U-Boot啟動流程(Linux核心)的分析(一)

       前面一段時間一直在移植U-Boot,Linux核心和構建根檔案系統,其中有些地方還不是很明白,現在回過頭來,理解一下U-boot的啟動流程,以及u-Boot是如何載入引導核心啟動的。這裡的分析也都是以U-Boot-2009.08版本為基礎的,可能會和以前的版本

U-Boot啟動流程(Linux核心)的分析

這一篇主要就是U-Boot的config.mk進行了分析。如果要使用開發板board/<board_name>,就先執行“make<board_name>_config”命令進行配置,然後執行”make all“,就可以生成 如下3個文件。 U-b

u-boot-1.1.6移植

hcl 輸入 ctrl u-boot 協議 null speed 相對 long 1.新建開發板相應目錄和文件 ①在boad目錄下添加my2440文件夾 ,拷貝smdk2410目錄下所有文件,修改文件名把smdk2410.c改為my2440.c   在include/con

buildroot構建項目(三)--- u-boot 2017.11 適配開發板修改 1

型號 mmu mman body 成功 -c 存儲器 介紹 我們   當前雖然編譯成功了,但是對於我們自己的目標板並不太適用。還得做一系列得修改。 一、lds 文件分析   u-boot 中最重要得鏈接文件即是,u-boot.lds。我們可以查看我們編譯出來得 u-boot

u-boot-2014.10移植(1

1 /*************************************************** 2 3 *u-boot版本 :u-boot-2014.10 4 5 *gcc版本 :/home/flinn/tools/4.4.3/bin/arm-none-linux-gn

u-boot-1.1.6 設定新分割槽支援裝置樹

在u-boot命令列執行mtaparts命令 mini2440 :> mtdparts device nand0 <smdk2440-0>, # parts = 4 #: name               

u-bootmakefile分析1

 1.u-boot版本號 VERSION = 1 PATCHLEVEL = 1 SUBLEVEL = 6 EXTRAVERSION = U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) VERSIO

u-boot原始碼目錄分析(以jz2440 u-boot1.1.6為例)

一、檔案的分析 arm_config.mk。字尾是.mk,是一個Makefile檔案,將來在某個Makefile中會去呼叫它。 Changelog檔案,修改記錄檔案,該檔案記錄了這個uboot專案的版本變遷以及每個版本較上個版本修改的記錄。 config.mk。和arm_

AM335x U-boot d程式碼分析過程1

題外話: 經過一段時間的學習,對u-boot-2014.10有了初步的瞭解,趁著還記著,趕緊寫下來,同時將之前還模稜兩可的部分用圖表的方式加強一下。 原始碼分析 彙編部分 之前一直看的是ARM9的u-boot,

從0到1燒寫u-boot詳細教程

拿到一塊嶄新的ARM開發板基本是一臉懵逼,想著怎麼用串列埠與之通訊,怎麼把u-boot.bin檔案燒寫進入。很多人在這裡就止步了其實這裡很簡單,接下來就給大家講解一下。 一.開發環境:         主機:Ubuntu12.04  

U-boot移植配置及編譯詳解 1

1.Uboot 的配置過程主要涉及四個檔案:   uboot/makefile   uboot/mkconfig  uboot/config.mk  uboot/board/samsung/smdkc110/u-boot.lds   2