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