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