felix的認識:
(1)Kconfig為make menuconfig提供配置選項;
(2).config是由make menuconfig産生的配置檔案;
(3)make核心的時候,會根據.config檔案,向Kbuild系統下的makefile檔案傳遞配置參數,決定是否加載driver module。
轉自:https://blog.csdn.net/qq_27840681/article/details/77335168
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UERPJTQE5ENjpWTmZEWjZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DO4IjNxkDN2EzNxgDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
一、Kconfig
1.定義:
一個文本形式的檔案,其中主要作用是在核心配置時候,作為配置選項。
即:在Kconfig檔案中添加配置選項。
2.文法:
config symbol //是個新的标記的菜單項
options //是在這個新的菜單項下的屬性和選項
例:config HELLO_MODULE
bool “hello test module”
depends on ARCH_PXA
help
XXXX
3.options5種類型:
bool布爾類型/tristate三态/string字元串/hex十六進制/integer整型
其中,bool:菜單項顯示為[],.config中生成一個 CONFIG_XXX=y/n (選中/不選中)
tristate:菜單項顯示為<>, .config中生成一個 CONFIG_XXX=y/m/n(編譯成核心映像/編譯成核心子產品/不編譯)
4.目錄層次疊代 :
通過source “/…/…/Kconfig”連結,這樣便可以使各個目錄管理各自的配置内容,使不必把那些配置都寫在同一個檔案裡,友善修改和管理
5.依賴關系:
例:
config HELLO_MODULE
bool “hello test module”
depends on ARCH_PXA
help
XXXX
表示 HELLO_MODULE 依賴于ARCH_PXA
6.make menuconfig:會出現核心的配置界面
二、.config
在選擇後會生成.config
三、Makefile
2.6核心的Makefile分為5個組成部分:
1. 最頂層的Makefile :讀取 .config檔案的内容,并總體上負責build核心和子產品。
2. 核心的.config配置檔案
3. 在arch/$(ARCH) 目錄下的體系結構相關的Makefile:提供補充體系結構相關的資訊
4. 在s目錄下的 Makefile.* 檔案:包含了所有用來根據kbuild Makefile 建構核心所需的定義和規則。
5. 各級目錄下的大概約500個kbuild Makefile檔案
最頂層的Makefile會調用.config負責編譯核心和子產品。