1、核心的原始碼樹的每一級目錄下一般都會有兩個檔案:kconfig和makefile。分布在各目錄下的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單,在核心配置make menuconfig時,如果已經存在.config,就直接將.config的選項顯示在圖形介面上,如果沒有.config則從kconfig中讀出配置選單,使用者配置完後儲存到.config(在頂層目錄下生成)中。在核心編譯時,主makefile呼叫這個.config,就知道了使用者對核心的配置情況。其實.config這個配置是不能直接使用的,核心在使用的時候其實使用的是根據.config生成的autoconf.h檔案,在核心目錄的include/generated/目錄下,make menuconfig完成後可以去該目錄下檢視。
2、kconfig的語法:
乙個典型的核心配置選單如下:
menu "network device support"
config netdevices
bool "enable net devices"
depends on net
select esa_dma_api
default y
help
this is help desciption。
...
endmenu
其中包含在menu/endmenu中的內容會成為network device support的子選單。
每乙個子選單項都是由config來定義的。
congfig下方的那些bool、depends on、select、default、help等為config的屬性,用於定義該選單項的型別、依賴項、反向依賴、預設值、幫助資訊等
3、config型別說明
每個config選單項都要有型別定義: bool布林型別、 tristate三態(內建、模組、移除)、string字串、 hex十六進製制、 integer整型。
bool 型別的只能選中或不選中,顯示為[ ];
tristate型別的選單項多了編譯成核心模組的選項,顯示為< > ,
假如選擇編譯成核心模組,則會在.config中生成乙個 config_***=m的配置
,假如選擇內建,就是直接編譯成核心影響,就會在.config中生成乙個 config_***=y的配置.
hex十六進製制型別顯示為( )。
4、依賴說明
依賴型定義depends on或requires
指此選單的出現是否依賴於另乙個定義
config cpu_loongson2k
bool "loongson 2k cpu"
depends on sys_has_cpu_loongson2k
select cpu_supports_32bit_kernel
這個例子表明cpu_loongson2k只有在選擇了sys_has_cpu_loongson2k, 該選單才可見(可配置)。
而cpu_supports_32bit_kernel反向依賴cpu_loongson2k,意思就是說,只有選擇了cpu_loongson2k,cpu_supports_32bit_kernel才可配置。
Kconfig檔案詳解
1 kconfig按照一定的格式來書寫,menuconfig程式可以識別這種格式,然後從中提取出有效資訊組成menuconfig中的選單項。2 將來在做驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項來將某個裝置驅動新增到核心的配置專案中,這時候就需要對kconfig的配置項格式有所了...
核心Kconfig詳盡分析
kconfig位於kernel原始碼內大部分的資料夾中,是一種特殊格式的檔案,負責提供kernel各個功能的配置選項。比如進行驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項,從而將某個裝置驅動新增到核心的配置專案中。需要注意的是,kconfig僅僅負責提供配置選項本身,而不提供各選項...
核心kconfig語法及原理
目前自己用過 menu desc endmenu menuconfig config str bool desc depends on config other default y help if config str do sth endif choice prompt desc default ...