Linux Kbuild文档 1
Linux內(nèi)核源代碼組織了一個配置系統(tǒng),該配置系統(tǒng)可以生成內(nèi)核配置菜單,方便內(nèi)核配置。配置系統(tǒng)主要包含Makefile、Kconfig和配置工具,可以生成配置界面。其中,配置界面是通過配置工具來生成的,配置工具通過Makefile編譯執(zhí)行,配置界面中的選項則是通過各級的Kconfig(老版本也稱Config.in)和Makefile(老版本也稱Kbuild)文件定義。
Linux內(nèi)核配置系統(tǒng)也被移植到其它軟件(如Busybox、glibc、uclibc等)中,來提供同樣的配置界面以方便有選擇性的配置。
1.2?內(nèi)核配置工具Linux內(nèi)核配置命令主要有:make config、make menuconfig、make xconfig和make gconfig,分別是字符界面、ncurses光標(biāo)菜單、QT圖形窗口和GTK圖形窗口的配置界面。字符界面配置方式需要回答每一個選項提示,逐個回答進(jìn)行配置并不方便,而光標(biāo)和圖形配置界面界面友好,方便實用。
make config是完全命令行的配置方式,make menuconfig依賴于ncurses庫,make xconfig依賴于QT圖形庫,make gconfig依賴于GTK圖形庫。
不同的內(nèi)核配置方式,分別通過不同的配置工具來完成。scripts目錄下提供了各種內(nèi)核配置工具,表1是這些工具的說明。
表1?內(nèi)核配置工具說明
| 配置工具 | Makefile相關(guān)目標(biāo) | 依賴的程序 |
| conf | config defconfig oldconfig … | conf.c、zconf.tab.c |
| mconf | menuconfig | mconf.c、zconf.tab.c |
| qconf | xconfig | qconf.c、kconfig_load.c、zconf.tab.c |
| gconf | gconfig | gconf.c、kconfig_load.c、zconf.tab.c |
其中zconf.tab.c程序?qū)崿F(xiàn)了解析Kconfig文件和內(nèi)核配置主要函數(shù)。Zconf.tab.c程序還直接包括了下列一些C程序,這樣各種配置功能都包含在zconf.tab.o目標(biāo)文件中了。
其中,lex.zconf.c實現(xiàn)lex語法解析器,
util.c實現(xiàn)配置工具,
confdata.c實現(xiàn).config等相關(guān)數(shù)據(jù)文件保存,
expr.c實現(xiàn)表達(dá)式函數(shù),
symbol.c實現(xiàn)變量處理函數(shù),
menu.c實現(xiàn)菜單控制函數(shù)。
1.3?內(nèi)核配置方式在頂層的Makefile中,可以查找到如下幾行定義的規(guī)則:
這就是生成內(nèi)核配置界面的命令規(guī)則,它也定義了執(zhí)行的目標(biāo)和依賴的前提條件,還有要執(zhí)行的命令。這條規(guī)則定義的目標(biāo)為config %config,通配符%意味著可以包括config、menuconfig、xconfig、gconfig等。依賴的前提條件是scripts_basic outputmakefile,這些在Makefile中也是規(guī)則定義,主要用來編譯生成配置工具。這條規(guī)則執(zhí)行的命令就是執(zhí)行scripts/kconfig/Makefile制定的規(guī)則。
根據(jù)配置工具的不同,內(nèi)核有不同的配置方式。有命令行方式,還有圖形界面方式。表2是各種內(nèi)核配置方法的說明。
表2?內(nèi)核配置方法的說明
| 配置方法 | 功能 |
| config | 通過命令行程序更新當(dāng)前配置 |
| menuconfig | 通過菜單程序更新當(dāng)前配置 |
| xconfig | 通過QT圖形界面更新當(dāng)前配置 |
| gconfig | 通過GTK圖形界面更新當(dāng)前配置 |
| oldconfig | 通過已經(jīng)提供的.config文件更新當(dāng)前配置 |
| Randconfig | 對所有的選項隨機配置 |
| Defconfig | 對所有的選項缺省配置 |
| allmodconfig | 對所有的選項盡可能選擇“m” |
| allyesconfig | 對所有的選項盡可能選擇“y” |
| allnoconfig | 對所有的選項盡可能選擇“n”的最小配置 |
這些內(nèi)核配置方式是在scripts/kconfig/Makefile中通過規(guī)則定義的。從這個Makefile中,可以找到下面一些規(guī)則定義。如果把變量或者通配符帶進(jìn)去,就可以明白要執(zhí)行的操作。
這里的ARCH以arm為例來說明。
執(zhí)行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用QT圖形庫生成配置界面,arch/arm/Kconfig是菜單的主配置文件,每種配置方式都需要。
執(zhí)行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用GTK圖形庫生成配置界面。
執(zhí)行命令:scripts/kconfig/mconf arch/arm/Kconfig,使用lxdialog工具,生成光標(biāo)配置菜單。
執(zhí)行命令:scripts/kconfig/conf (-o/s) arch/arm/Kconfig,完全命令行的內(nèi)核配置方式。使用“-o”選項,直接讀取已經(jīng)存在的.config文件,要求確定內(nèi)核新的配置項。使用“-s”選項,直接讀取已經(jīng)存在的.config文件,提示但不要求確認(rèn)內(nèi)核新的配置項。
通過上述各種方式都可以完成配置內(nèi)核的工作,在頂層目錄下生成.config文件。這個.config文件保存大量的內(nèi)核配置項,.config會自動轉(zhuǎn)換成include/linux/autoconf.h頭文件。在include/linux/config.h文件中,將包含使用include/linux/autoconf.h頭文件。
總結(jié)
以上是生活随笔為你收集整理的Linux Kbuild文档 1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招行白金卡信用卡额度一般多少
- 下一篇: 《漫威蜘蛛侠》开发商被群嘲:多次称游戏不