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模組可以很好的解決這個問題。該模組加入並不會影響程式的執行,不會...