Linux 核心中 Kconfig 檔案的作用和新增 menuconfig 項的方法

amc發表於2019-05-10

Ref: Linux核心中Kconfig檔案的作用

本文地址:https://segmentfault.com/a/11…


Kconfig的作用

Kconfig就是服務於menuconfig的一個配置檔案。在對應目錄下配置Kconfig檔案,就是在配置對應的menuconfig專案。
有很多種配置方式,這裡我暫時只是給一種簡單的,也就是yes和no的方式。比如我新新增了一個配置,寫了一個電機驅動裝置:

config XXXX_MOTOR
    bool "xxxx 4-phased motor support"
    default y
    ---help---
        Provide GPIO-based motor support.
        Designed by AMC.

其中bool表示這是一個二態值(三態值是“tristate”)。後面的“—help—”指明幫助資訊,並且會在menuconfig選單中出現。注意幫助資訊並不會自動換行,一行太長顯示不了的資訊會被截斷,所以請自行控制換行。

其他更復雜的配置方式,可以仔細看參考資料。

完成了make menuconfig之後,核心會生成.config檔案,就在Linux程式碼樹的根目錄下。這個檔案制定了各個模組是否會被編譯,由Makefile讀取並在編譯過程中配置核心。

Makefile的修改

如果你修改了對應資料夾下面的Kconfig,那麼你還要修改相應的Makefile才行。以前文為例,我新增了配置項在Kconfig中,這個Kconfig的位置是drivers/char/,那麼我必須在這個資料夾下的Makefile中新增一行:

obj-$(CONFIG_XXXX_MOTOR) += xxxx_motor.o

其中要正確地寫上目標檔案的名稱。然後,專心新增你的.c和.h檔案就行了。由於是二態的選項,所以你的程式碼要麼就直接被包含在核心中,要麼就壓根不存在。不像三態的,還有一個“M”選項。三態配置參見參考資料吧。

相關文章