眾所周知,Linux內(nèi)核是使用make命令來配置并編譯的,那必然少不了Makefile。如此復(fù)雜、龐大的內(nèi)核源碼絕不可能使用一個或幾個Makefile文件來完成配置編譯,而是需要一套同樣復(fù)雜、龐大,且為Linux內(nèi)核定制的Makefile系統(tǒng)。
盡管這是一個復(fù)雜的系統(tǒng),但對絕大部分內(nèi)核開發(fā)者來說只需要知道如何使用,而無需了解其中的細(xì)節(jié)。她對絕大部分內(nèi)核開發(fā)者基本上是透明的,隱藏了大部分實現(xiàn)細(xì)節(jié),有效地降低了開發(fā)者的負(fù)擔(dān),能使其能專注于內(nèi)核開發(fā),而不至于花費時間和精力在編譯過程上。
1.1Linux內(nèi)核中的Makefile文件
1.1.1頂層Makefile
源碼目錄樹頂層Makefile是整個內(nèi)核源碼管理的入口,對整個內(nèi)核的源碼編譯起著決定性作用。編譯內(nèi)核時,頂層Makefile會按規(guī)則遞歸歷遍內(nèi)核源碼的所有子目錄下的Makefile文件,完成各子目錄下內(nèi)核模塊的編譯。熟悉一下該Makefile,對內(nèi)核編譯等方面會有所幫助。
1.內(nèi)核版本號
打開頂層Makefile,開頭的幾行記錄了內(nèi)核源碼的版本號,通常如下所示:
說明代碼版本為2.6.35.3,編譯得到的內(nèi)核在目標(biāo)板運行后,輸入uname -a命令可以得到印證: