修改xxx_defconfig没有起效果原因分析

问题:正常情况下我们要在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
2
CONFIG_XXX_LKCD=y
#CONFIG_XXX_LKCD is not set

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
2
3
4
5
6
7
8
9
10
11
12
13
#
# ARM xxx_lkcd(xxx project linux kernel crash dump) configuration
#

menu "xxx linux kernel crash dump"

config XXX_LKCD
bool "Enable xxx linux kernel crash dump"
default n
depends on PROC_FS && ARM
help
Enable xxx linux kernel crash dump
endmenu

注意一定要设置default n,这样才能在xxx_defconfig自由的修改打开或者关闭。

Title:修改xxx_defconfig没有起效果原因分析

Author:Victor Huang

Time:2019-03-17 / 16:03

Link:http://wowothink.com/abc20ccf/

License: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)