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