问题:正常情况下我们要在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自由的修改打开或者关闭。