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.oobj-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其它相關文章!






