三、linux内核驱动裁剪
總結:
- Menuconfig是編輯內核的工具。
- Kconfig定義Menuconfig菜單選項。
- .config是最后Menuconfig配置完生成的文件。
- Makefile根據.config宏定義判斷是否編譯驅動。
一、Menuconfig的操作
1、Linux編譯器通過.config文件確認哪些代碼編譯進內核,哪些被裁減掉,menuconfig是生成.config的一個工具。
在Linux發展過程中,配置內核可以使用一下命令:
????????– #make config(基于文本的最為傳統的配置界面,不推薦使用)
????????– #make menuconfig(基于文本菜單的配置界面)
????????– #make xconfig(要求QT被安裝)
????????– #make gconfig(要求GTK+被安裝)
2、在Linux源碼目錄下輸入命令make Menuconfig,可以進入配置界面
– menuconfig實現的代碼在源碼“scripts”目錄下(了解即可)
3、搜索
????????– 界面輸入“/”,輸入查找關鍵詞,輸入“回車”即可搜索
4、使用 “ 空格 ”鍵 選擇具體驅動配置,有 三種狀態
????????– “M”編譯成模塊(需要在編譯文件里面特殊定義,后面介紹)
????????– “空”不編譯狀態
????????– “*”編譯進內核
二、Kconfig文件
1、Kconfig簡介
????????當執行#make menuconfig時會出現內核的配置界面,所有配置工具都是通過讀取"arch/$(ARCH)Kconfig"文件來生成配置界面,這個文件就是所有配置的總入口,它會包含其他目錄的Kconfig
????????Kconfig的作用:Kconfig用來配置內核,它就是各種配置界面的源文件,內核的配置工具讀取各個Kconfig文件,生成配置界面供開發人員配置內核,最后生成配置文件.config
????????linux源碼目錄下的Kconfig也是通過腳本編寫而成,所以學會“仿寫”即可。Kconfig文件在每一級目錄下都有,源碼下的如下圖所示。
2、Linux內核配置裁減
打開:drivers/char/Kconfig,在LEDS_CTL上面仿寫一個HELLO_CTL。
然后查看menuconfig配置和裁減HELLO的驅動,查看.config文件的變化,將HELLO定義為“tristate”,可選為“M”狀態。
三、.config
menuconfig配置完后,會生成.config,在linux內核源碼根目錄。打開如下:
里面實際上就是很多根據剛剛配置生成的宏定義開關。用于開關驅動。這些宏定義開關在對應的驅動目錄下的Makefile文件中,起到了開關作用。如下面LED驅動的Makefile,就是根據這個.config里面的宏定義,來判斷是否將itop4412_leds編譯進內核里。
總結
以上是生活随笔為你收集整理的三、linux内核驱动裁剪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux思考の为何要挂载
- 下一篇: 四、linux编译规则文件Makefil