【IT168 技術分析】
Makefile不是Make Love
從前在學校,混了四年,沒有學到任何東西,每天就是逃課,上網,玩游戲,睡覺。畢業的時候,人家跟我說Makefile我完全不知,但是一說Make Love我就來勁了,現在想來依然覺得丟人。
毫不誇張地說,Kconfig和Makefile是我們浏覽內核代碼時最為依仗的兩個文件。基本上,Linux內核中每一個目錄下邊都會有一個Kconfig文件和一個Makefile文件。對於一個希望能夠在Linux內核的汪洋代碼裡看到一絲曙光的人來說,將它們放在怎麼重要的地位都不過分。
我們去香港,通過海關的時候,總會有免費的地圖和各種指南拿,有了它們在手裡我們才不至於無頭蒼蠅般迷惘的行走在陌生的街道上。即使在內地出去旅游的時候一般來說也總是會首先找份地圖,當然了,這時就是要去買了,拿是拿不到的,不同的地方有不同的特色, 只不過有的特色是服務,有的特色是索取。
Kconfig和Makefile就是Linux Kernel迷宮裡的地圖。地圖引導我們去認識一個城市,而Kconfig和Makefile則可以讓我們了解一個Kernel目錄下面的結構。我們每次浏覽kernel尋找屬於自己的那一段代碼時,都應該首先看看目錄下的這兩個文件。
利用Kconfig和Makefile尋找目標代碼
就像利用地圖尋找目的地一樣,我們需要利用Kconfig和Makefile來尋找所要研究的目標代碼。比如我們打算研究U盤驅動的實現,因為U盤是一種storage設備,所以我們應該先進入到drivers/usb/storage/目錄。但是該目錄下的文件很多,那麼究竟哪些文件才是我們需要關注的?這時就有必要先去閱讀Kconfig和Makefile文件。
對於Kconfig文件,我們可以看到下面的選項。
config USB_STORAGE_DATAFAB顯然,這個選項和我們的目的沒有關系。首先它專門針對Datafab公司的產品,其次雖然CompactFlash reader是一種flash設備,但顯然不是U盤。因為drivers/usb/storage目錄下的代碼是針對usb mass storage這一類設備,而不是針對某一種特定的設備。U盤只是usb mass storage設備中的一種。再比如:
config USB_STORAGE_SDDR55