Linux內核源碼很多,有上千條配置選項,配置相當復雜。 為了更好選擇自己想要的功能配置,linux內核源碼組織了一個配置系統; 配置系統包括三部分: 這個配置系統就是執行 內核配置選項的源文件是 主選項的配置源文件是: 主 例如: drivers/net/usb/Kconfig中,DM9601菜單: 菜單都是以 Kconfig的語法詳細參考:Documentation/kbuild/kconfig-languages.txt 內核配置完畢之后,會在內核源碼的頂層目錄下生成 打開 這里在配置中選上了 和 相當于: 通常每個廠商都有自己的 在日常開發過程中,對于修改過Linux內核配置系統的組成
Makefile
:負責整體的配置編譯Kconfig
:配置選項的來源make menuconfig
顯示的圖形化界面:內核Kconfig文件
Kconfig層級關系
Kconfig
文件;arch/$(ARCH)/Kconfig
文件;Kconfig
文件調用其他目錄的Kconfig
文件,其他目錄的Kconfig
文件又調用各級子目錄的Kconfig
文件,形成樹狀的配置選項;Kconfig語法介紹
config USB_NET_DM9601
是菜單項;菜單項下面的是菜單的屬性;config
開頭,中間有空格,后面大寫的就是菜單項。
tristate
:表示提示信息,在配置菜單中顯示的字符串depends
:表示依賴于的選項(依賴的選項選上,才能選這個選項)select
:表示本菜單選上后,自動選上的菜單Help
:幫助文字;
.config文件
.config
文件;.config
文件,我們可以看到內容如下:”Davicom DM96xx based USB 10/100 ethernet device”
選項,在.config
文件中會生成“CONFIG_USB_NET_DM9601=y
”的配置信息;如果沒有選上,這個選上會用“#”注釋掉;內核Makefile文件
Kconfig
一樣,頂層以及各子目錄下都有一個Makefile
文件。其作用如下:
Makefile
負責配置編譯整個linux內核;Makefile
讀取.config
文件,根據.config
文件的配置選項編譯內核;makfile
遞歸地遍歷內核源碼中的所有子目錄,編譯所有的目標文件;Mekefile
文件,這些Makefile
文件會使用.config
文件中的信息,編譯相應的文件;Makefile
中的例子:obj-$(CONFIG_USB_NET_DM9601) += dm9601.o
obj-y += dm9601.o
obj-y
的意思是把dm9601.o
目標文件編譯進內核,dm9601.o
目標文件應該從dm9601.c
或dm9601.S
文件中編譯過來;obj-m
的意思是把目標文件編譯成模塊加載內核配置的方法
defconfig
文件,加載配置時只需執行make xxx_defconfig
,然后就會生成一個.config
文件,即代表加載完配置。.config
,通常也將.config
拷貝覆蓋原來的xxx_defconfig
,然后上傳代碼。
以上就是一個Linux驅動工程師必知的內核配置知識的詳細內容,更多請關注www.92cms.cn其它相關文章!