第10課第3節 核心啟動流程分析之Makefile

2021-06-27 07:58:53 字數 1259 閱讀 4509

1.linux核心makefile檔案分類:

.config:配置檔案,由其決定生成那些檔案,供原始碼使用的標頭檔案,autoconfig.h及供makefile使用的檔案,auto.conf;

scripts/makefile.*:makefile的通用規則、指令碼等;

kbuild makefiles:各級子目錄下的makefile,相對簡單;

2.makefile的三大作用

第一:決定編譯哪一些原始碼檔案

1.頂層makefile:決定編譯進核心的子目錄;

2.各級子層makefile:決定目錄下那些檔案編譯進核心、哪些檔案編譯成模組,還有包含哪些子目錄的makefile;

第二:怎樣編譯這些檔案

其中,全域性編譯鏈結選項位於頂層makefile及/arch/$(arch)/makefile中,如

export kbuild_buildhost := $(subarch)

#arch ?= $(subarch)

arch ?= arm

cross_compile ?= $(config_cross_compile:"%"=%)

# architecture as present in compile.h

uts_machine := $(arch)

srcarch := $(arch)

區域性的編譯鏈結選項位於各級子目錄中,個體的編譯鏈結選項針對於具體的檔案,一般使用那個cflags_$@,aflags_$@來分別編譯c語言及組合語言。

第三、鏈結檔案的順序

檔案的依賴關係總有個先來後到嘛,總之,makefile就負責制定規則,哪些檔案可以被包括,這些檔案的順序,都被makefile組織起來,各級子makefile又規定子目錄中的檔案,這樣對整個目錄的原始碼編譯過程都能夠做到可控,是不是很像government的組織結構跟功能呢?

3.kconfig

kconfig-決定->.config--生成->auto.conf(決定模組編譯時,模組型別,m或者y)

|-生成->autoconf.h(標頭檔案形式,供原始碼使用的標頭檔案)

4.注意:%」的展開發生在變數和函式的展開之後,變數和函式的展開發生在

make 載入 makefile 時,而模式規則中的「%」則發生在執行時。

第3個10課整理

關係運算子 各個運算子含義 is使用者物件的比較 小整數物件池 5到256 邏輯運算子 and邏輯與 true and true or邏輯或 兩邊都為假才假 not取反 進製的轉換 將八進位制數字 423.5176 轉換成十進位制 423.5176 4 82 2 81 3 80 5 8 1 1 8 ...

第10節 流程控制語句(下)

for語句的語法格式 for 表示式1 表示式2 表示式3 for語句的執行規則是 1 計算 表示式1 完成必要的初始化工作。2 判斷 表示式2 的值,若 表示式2 的值為true,則進行 3 否則進行 4 3 執行迴圈體,然後計算 表示式3 以便改變迴圈條件,進行 2 4 結束for語句的執行。w...

Python模組分析 第3節 typing模組

python模組分析 第2節 hashlib加密模組 python模組分析 第4節 logging日誌模組 python是一門弱型別的語言,很多時候我們可能不清楚函式引數型別或者返回值型別,很有可能導致一些型別沒有指定方法,typing模組可以很好的解決這個問題。該模組加入並不會影響程式的執行,不會...