本文主要是介绍Linux下Makefile、Kconfig、.config、make menuconfig的关系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在 drivers/input/touchscreen/Makefile
中添加驱动: obj-$(CONFIG_TOUCHSCREEN_GSLX680) += gslx680/
。
只要当配置了CONFIG_TOUCHSCREEN_GSLX680
的选项才会去编译gslx680
目录下的内容。在配置内核的时候会通过make menuconfig
来配置对应的选项。或者是直接在defconfig文件中强制设置该选项。
示例:
- 驱动所在的路径:firefly-sdk\kernel\drivers\input\touchscreen\gslx680_firefly.c
- MakeFile所在路径:firefly-sdk\kernel\drivers\input\touchscreen\Makefile
- Kconfig所在路径:firefly-sdk\kernel\drivers\input\touchscreen\Kconfig
1.查看Makefile文件内容包含:obj-$(CONFIG_TOUCHSCREEN_GSLX680_FIREFLY) += gslx680_firefly.o gsl_point_id.o
说明在编译内核Kernel时,可以通过make menuconfig界面来配置内核
2.查看Kconfig内容,可以看到CONFIG_TOUCHSCREEN_GSLX680_FIREFLY和字符串"gslX680 touchpad driver for firefly-rk3288"绑定,通过选择"gslX680 touchpad driver for firefly-rk3288"来配置CONFIG_TOUCHSCREEN_GSLX680_FIREFLY宏定义
3.通过make menuconfig配置内核:
a.Device Drivers->Input device support->Touchscreens->
b.可以看到
"gslX680 touchpad driver for firefly-rk3288"以动态加载方式已经选择好了,这里选择后,那么宏CONFIG_TOUCHSCREEN_GSLX680_FIREFLY就定义了,此时会生成.config,这里我将其保存为.config,下面就一起看一下.config内容
c.查看.config(保存在kernel根目录下面)的内容如下,可以看到CONFIG_TOUCHSCREEN_GSLX680_FIREFLY=y
通过ll命令可以看到.config文件
#ll(LL的小写)
通过gedit .config命令可以查看.config内容,可以看到CONFIG_TOUCHSCREEN_GSLX680_FIREFLY=y
# gedit .config
4.那么我们在kernel下通过make命令如何将这些驱动编译进来的呢?下面进行讲解。
a.进到kernel根目录下,打开下面的Makefile(firefly-sdk\kernel\Makefile),可以看到这里编译内核是通过.config来进行编译的
由此总结,可知,编译内核首先通过make menuconfig对内核kernel进行裁剪,裁剪后生产.config文件,所有需要编译进内核的驱动组件等都是以CONFIG_XXX=y的形式配置进.config,然后通过make来编译内核,make会解析Makefile,Makefile内部是通过.config来决定哪些组件编译进内核,MakeFile会一层层往下找子Makefile配合同目录下的Kconfig(将字符串解析成宏),一层层,最终找到要编译的.c文件将其编译进内核。
这篇关于Linux下Makefile、Kconfig、.config、make menuconfig的关系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!