开启CONFIG_DEBUG_INFO_BTF编译Linux 5.10.162内核失败求助
解决Linux 5.10.162内核编译BTF时udp_sock符号未解析的问题
针对编译Linux 5.10.162内核并开启CONFIG_DEBUG_INFO_BTF=y时出现的FAILED unresolved symbol udp_sock错误,可按以下方向排查解决:
检查UDP相关内核配置
udp_sock是UDP子系统的核心结构体,若相关配置未开启,会导致BTF无法生成该符号:
- 确认
CONFIG_INET=y和CONFIG_UDP=y已开启,这两个是UDP功能的基础依赖 - 开启
CONFIG_UDP_DIAG=y,该选项会确保udp_sock的BTF元数据被正确生成,部分场景下关闭它会触发resolve_btfids的符号查找失败
修复resolve_btfids工具的符号解析问题
5.10系列内核的resolve_btfids存在部分版本兼容问题,可尝试以下操作:
- 编译时手动指定BTF文件路径:
make VMLINUX_BTF=./vmlinux.btf,跳过工具的自动符号查找逻辑 - 彻底清理编译缓存:执行
make clean && make mrproper,删除旧的编译产物和BTF残留文件后重新配置编译
调整dwarves版本兼容性
虽然你已测试1.22和1.24版本,但5.10内核与dwarves 1.21、1.23版本兼容性更稳定,可尝试降级dwarves后重新编译
若以上方法仍无法解决问题,请提供你的内核.config文件,重点关注网络子系统(INET、UDP相关)及BTF、BPF类配置项,以便进一步定位问题
内容的提问来源于stack exchange,提问作者Ivan Kalchev
相关产品推荐
相关产品推荐

