问题:正常情况下我们要在Kernel中配置某个功能,会去Kernel_SrcDir/arch/arm/configs/xxx_defconfig
文件中修改某个宏 =y
或者is not set
。
但是有时候我们明明设置进去了,在Kernel_SrcDir/.config
中却没有看到已配置进去。出现该问题基本上以下几个原因导致的:
1、编译之前没有事先删除Kernel_SrcDir/.config
文件,如果Kernel_SrcDir/.config
文件存在,是不会去更新xxx_defconfig
的内容的;
2、编写xxx_defconfig
的格式不对,一定要严格按照以下格式:宏要顶格写,屏蔽宏的要使用#
号。
1 | CONFIG_XXX_LKCD=y |
3、比如说你已按照上述要求将CONFIG_XXX_LKCD
配置为is not set
,但在.congig
中看到它还是为CONFIG_XXX_LKCD=y
。
出现这种情况是由于在驱动位置中对应的Kconfig
将其设置为default y
,所以在xxx_defconfig
怎么改这个宏都是打开的。
注意:.config
是根据xxx_defconfig
和代码路径下的Kconfig
生成的。
我之前在Kernel_SrcDir/drivers/xxx_lkcd/
新增一个驱动。肯定要在里面添加Kconfig
,内容如下:
1 | # |
注意一定要设置default n
,这样才能在xxx_defconfig
自由的修改打开或者关闭。