我們在編譯linux核心時都會用到幾個檔案 .config檔案 Kconfig檔案 Makefile檔案以及make menuconfig指令出現的菜單,那他們之間有什麼聯系呢?
首先,Makefile檔案不用多講,這是linux核心的編譯檔案,使用make uImage或make zImage時就是用Makefile檔案來編譯的。
對于make menuconfig來講,這是一個菜單配置核心檔案,菜單檔案中主要包括下面幾種情況
(1)[ ] 方括号類型
按下空格鍵來選擇,
* <====> y 如果選擇為y,則代表該配置選項(功能)被編譯進核心
make uImage (led.c驅動要放在對應目錄中)
空格 不選
(2)< > 尖括号類型
有三種狀态 *代表選中 沒有*代表未選中 M代表子產品
M <====> M 編譯成子產品 ,沒有編譯成核心。使用時可以通過make modules 生成.ko檔案,然後手動加載。
(3)( )圓括号類型
某個小括号可能存放了十進制整數,也可能存放十六進制整數,還有可能存放字元串。

上圖是make menuconnfig中字元驅動下的菜單顯示
Kconfig和make menuconfig是一一對應的。源碼下有多個Kconfig檔案,對應make menuconfig中的每一頁。我們看一下源碼下的Kconfig
和主菜單(下圖)實際上是一樣的,最後一行是包含的目錄,這樣就可以繼續向下尋找了。
簡單了解一下在Kconfig中的文法規則,我們來看一下驅動中字元裝置中的Kconfig
菜單中對應如下
首先是
第一行 config XXXXXXX 打頭的,這裡的XXXXXX是要和.config配合使用的
第二行 是對應剛才說的[] <> ()三種類型以及顯示在menu中名字,
bool 對應[]
tristate 對應<> triple state 三态的簡稱
string 對應()
後面引号中跟着的是顯示在menu中資訊
第三行 設定一下預設值 y代表是選中 n為不選中
第四行 可以添加一些幫助資訊給使用者顯示
要添加一個子產品,就根據類似寫法在Kconfig中添加 就能在make menuconfig中顯示了。
對于.config屬于核心的配置檔案,我們來看一看對應的字元驅動
之前說到Kconfig中的第一行會和.config産生聯系,.config中會自動在Kconfig中起的名字前加上大寫的CONFIG_。y表示選中。這個配置是如何起作用的呢?
我們來看看對應驅動字元裝置的Makefile
是否編譯對應檔案 就看CONFIG_XXXXX設定為何值了。
添加一個子產品 要在兩個地方進行添加,1是在對應檔案的Kconfig中添加,然後就進入make menuconfig中設定,設定完.config中就自動有了對應的配置。2然後在對應的Makefile中進行編譯配置。