在內(nèi)核編譯中如何將各個(gè)目錄樹(shù)中的文件組織起來(lái)編譯是一個(gè)很重要的問(wèn)題,并且要根據(jù)用戶(hù)配置來(lái)編譯特有的內(nèi)核。為了解決這個(gè)問(wèn)題,內(nèi)核使用兩種文件,Makefile和 Kconfig。分布到各目錄的 Kconfig構(gòu)成了個(gè)分布式的內(nèi)核配置數(shù)據(jù)庫(kù),每個(gè) Kconfig分別描述了所屬目錄源文檔相關(guān)的內(nèi)核配置菜單,就是我們使用命令 make menuconfig(或者 xconfig)后產(chǎn)生的配置菜單,此菜單包含多層,每個(gè)層次都是由各個(gè)目錄中的Kconfig產(chǎn)生的。用戶(hù)根據(jù)需求來(lái)選擇如何編譯內(nèi)核,然后將配置結(jié)果保存到 config中,然后執(zhí)行 Makefile時(shí)就會(huì)根據(jù) onfig的結(jié)果來(lái)實(shí)現(xiàn)內(nèi)核的編譯。這個(gè)過(guò)程是由 kbuild系統(tǒng)來(lái)完成的,Linux編譯系統(tǒng)會(huì)兩次掃描 Linux的 Makefile:首先編譯系統(tǒng)會(huì)讀取 Linux內(nèi)核頂層的 Makefile,然后根據(jù)讀到的內(nèi)容第二次讀取 Kbuild的 Makefile來(lái)編譯 Linux內(nèi)核。內(nèi)核編譯系統(tǒng)或者說(shuō) kbuild,是一種在編譯內(nèi)核時(shí),可以對(duì)內(nèi)核配置選項(xiàng)進(jìn)行選擇的機(jī)制。2.6內(nèi)核樹(shù)中已經(jīng)更新了這種機(jī)制,新版本的 kbuild不僅高速而且備有更完善的文檔。Kbuild機(jī)制完全依賴(lài)于源代碼的層次結(jié)構(gòu)。Kconfig的作用就是為了讓用戶(hù)配置內(nèi)核,在Kconfig中定義了一些變量,用戶(hù)通過(guò)設(shè)置變量的值來(lái)選擇如何個(gè)性化自己的系統(tǒng)內(nèi)核。定義的變量將在每個(gè)菜單都有一個(gè)關(guān)鍵字標(biāo)識(shí),最常見(jiàn)的就是contig
標(biāo)簽:
linux
上傳時(shí)間:
2022-03-30
上傳用戶(hù):