歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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表示該配置需要單獨編譯成模塊

Copyright © Linux教程網 All Rights Reserved