Linux核心移植 -- Kconfig
1 Kconfig的作用
在核心開發中我們在配置核心時,執行指令
make menuconfig
看到的配置介面,就是通過Kbuild-language讀取總目錄下的Kconfig語句生成的配置畫面,因此在配置核心時,瞭解Kconfig語法級顯得尤其重要
linux-xx-xx/Kconfig 核心的Kconfig總目錄
uboot/Kconfig U-boot中Kconfig總目錄
Kconfig的語法可以參見linux官方的參考文件
/Docunmentation/kbuild/kconfig-language.txt
2 Kconfig語法詳解
config條目
config TMPFS_POSIX_ACL bool "Tmpfs POSIX Access Control Lists" depends on TMPFS select GENERIC_ACL
-
config是關鍵字,表示一個配置選項的開始;緊跟著的TMPFS_POSIX_ACL是配置選項的名稱,省略了字首"CONFIG_"
-
bool表示變數型別,即"CONFIG_ TMPFS_POSIX_ACL "的型別,有5種類型:bool、tristate、string、hex和int,其中tristate和string是基本的型別。
bool變數的值: y和n tristate變數的值:y、n和m string變數的值: 字串 bool之後的字串“Tmpfs POSIX Access Control Lists”是提示資訊(在上面的配置介面中就是通過它來識別CONFIG_TMPFS_POSIX_ACL),在配置介面中上下移動游標選中它時,就可以通過按空格或回車鍵來設定CONFIG_ TMPFS_POSIX_ACL的值(即選擇了哪個值就會把該值賦值給CONFIG_TMPFS_POSIX_ACL)
-
depends on:表示依賴於XXX,“depends on TMPFS”表示只有當TMPFS配置選項被選中時,當前配置選項的提示資訊才會出現,才能設定當前配置選項
-
select:是反向依賴關係的意思,即當前配置選項被選中,則GENERIC_ACL就會被選中。
menu條目
menu條目用於生成選單,其格式如下:
menu "Floating point emulation" config FPE_NWFPE .............. config FPE_NWFPE_XP ............. endmenu
menu之後的Floating poing emulation是選單名。menu和endmenu間有很多config條目,在配置介面中如下所示:
其中Floating point emulation就是選單名,然後進入這個選單有 FPE_NWFPE、FPE_NWFPE_XP…等config條目選擇
Floating point emulation--->
[] FPE_NWFPE
[] FPE_NWFPE_XP
choice條目
choice條目將多個類似的配置選項組合在一起,供使用者單選或多選,這不同於menu條目
choice
prompt "ARM system type"
default ARCH_VERSATILE
config ARCH_AAEC2000
.........
config ARCH_REALVIEW
.........
endchoice
prompt "ARM system type"給出提示資訊“ARM system type”,游標選中後回車進入就可以看到多個config條目定義的配置選項
choice條目中定義的變數只有bool和tristate
comment條目
comment條目用於定義一些幫助資訊,出現在介面的第一行,如在arch/arm/Kconifg中有如下程式碼:
menu "Floating point emulation"
comment "At least one emulation must be selected" config FPE_NWFPE
.........
config FPE_NWFPE_XP
source條目
source條目用於讀取另一個Kconfig檔案,如:
source "net/Kconifg"