2.15.8.Kconfig文件詳解2
本節進一步解釋Kconfig中配置項的細節,如depends、select等關鍵字的作用。
2.15.8.1、depends的含義
(1)depends中文意思是“取決於”或者“依賴於”,所以depends在這裏的意思是:本配置項依賴於另一個配置項。如果那個依賴的配置項為Y或者M,則本配置項才有意義;如果依賴的哪個配置項本身被設置為N,則本配置項根本沒有意義。
(2)depends項目會導致make menuconfig的時候找不到一些配置項。所以你在menuconfig中如果找不到一個選項,但是這個選項在Kconfig中卻是有的,則可能的原因就是這個配置項依賴的一個配置項是不成立的。
(3)depends並不要求依賴的配置項一定是一個,可以是多個,而且還可以有邏輯運算。這種時候只要依賴項目運算式子的裸機結果為真則依賴就成立。
2.15.8.2、help
(1)幫助信息,告訴我們這個配置項的含義,以及如何去配置他。
2.15.8.3、Kconfig和.config文件和Makefile三者的關聯
(1)配置項被配置成Y、N、M會影響.config文件中的CONFIG_XXX變量的配置值。
(2)這個.config中的配置值(=y、=m、沒有)會影響最終的編譯鏈接過程。如果=y則會被編入(built-in),如果=m會被單獨連接成一個ko模塊,如果沒有則對應的代碼不會被編譯。那麽這麽是怎麽實現的?都是通過makefile實現的。
(3)obj-$(CONFIG_DM9000) += dm9000.o
如果CONFIG_DM9000變量值為y,則obj += dm9000.o,因此dm9000.c會被編譯;如果CONFIG_DM9000變量未定義,則dm9000.c不會被編譯。如果CONFIG_DM9000變量的值為m則會被連接成ko模塊(這個是在linux內核的Makefile中定義的規則)
總結:把menuconfig中的菜單項、Kconfig中的配置項、.config中的一行、 Makefile中的一行,這4個東西結合起來理解,則整個linux內核的配置體系就明了了。
2.15.8.Kconfig文件詳解2