Linux源碼Kconfig文件語法分析


Kconfig是我們進行內核配置的關鍵文件,用於生成menuconfig的界面並生成最終確定編譯選項的.config文件。關於Kconfig文件的編寫規則,在Documentation/kbuild/kconfig-language.txt有詳盡的敘述。這里主要用實例進行語法分析。

config

確定了條目前面是否有選項,menuconfig界面中的條目中一共有3種主動選項,分別是[ ],< >( ),分別表示"被編譯進內核or舍棄","編譯進內核or編譯成模塊or舍棄", "按照提示輸入一個數字",分別對應Kconfig文件中的bool,tristateint{ }- -屬於被動選項,是配置系統根據依賴關系自動生成的選項,不能被手動修改。

即圖形界面中有--->的條目,回車后可以展開。條目前面沒有選項

!


是menu和config的結合體,既在前面有選項,回車后也可以展開。

choice/endchoice

展開之后會有多選一的界面,每種選項都有獨立的config管理


comment


if/endif

如果if之后的值被選定了,里面的內容才能展開



source

表示調用指定路徑的Kconfig,相當於C中的include,上例已經給出說明

depends on

實現配置的相當關鍵的關鍵字,表示當前選項依賴於另外一個選項,如果另外一個不選,這個都不會出現。




select

另一個相當關鍵的關鍵字,表示當前選項需要另外選項的支持,如果選了當前選項,那么其后的選項會被強制選擇,{ }- -就是這個實現的。下例中,只要這些Kconfig中進行了"select HAVE_ARM_ARCH_TIMER",都會導致"HAVE_ARM_ARCH_TIMER"被強制選擇,表現在menuconfig上就是"Architected timer support"被強制選定

.config文件分析

經過適當的配置之后保存就會在頂層目錄下生成.config文件
=y表示該配置將會被編譯進內核,=m表示該配置需要單獨編譯成模塊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM