Linux .config缺失CONFIG_DEBUG_INFO_BTF及手动添加后被删除问题
CONFIG_DEBUG_INFO_BTF配置自动消失的原因
- 依赖未满足
CONFIG_DEBUG_INFO_BTF有强制前置依赖:首先内核版本需 ≥5.2,旧版本内核无该配置项;其次必须开启CONFIG_DEBUG_INFO=y;同时编译环境需要安装pahole工具(归属dwarves软件包),没有安装该工具时,内核构建系统会自动关闭该选项。 - 架构/平台不支持
部分架构(如32位x86、部分小众嵌入式架构)不支持BTF特性,构建系统会自动过滤掉不兼容的配置项。 - 配置冲突
若开启了CONFIG_DEBUG_INFO_REDUCED=y、CONFIG_DEBUG_INFO_NONE=y等精简调试信息的配置,或者部分特殊构建配置(如最小化裁剪配置),也会导致BTF配置被自动关闭。 - 手动修改.config不符合构建逻辑
内核的.config由Kconfig配置系统统一管理,所有手动修改的内容如果不满足Kconfig定义的依赖、架构限制规则,运行任何make命令时都会被Kconfig自动修正或删除,直接修改.config本身就是不被推荐的操作。
正确配置流程:
- 安装对应依赖:
apt install dwarves(Debian/Ubuntu系)或对应发行版的dwarves软件包- 运行
make menuconfig,在Kernel hacking -> Compile-time checks and compiler options路径下找到Generate BTF typeinfo选项,直接勾选保存,Kconfig会自动校验所有依赖,找不到该选项则说明环境不满足前置要求- 后续运行
make olddefconfig或make命令,配置都会正常保留
内容的提问来源于stack exchange,提问作者Jack Humphries
相关产品推荐
相关产品推荐

