使用allyesconfig构建带调试信息的Linux内核出错求助
解决
allyesconfig下添加内核调试信息触发modpost截断错误的方法 这个错误是因为allyesconfig开启了所有内核功能,加上调试信息后vmlinux.o体积暴增,超出了modpost预设的段偏移阈值,导致工具判定文件截断。试试下面几个解决办法:
关闭段不匹配调试选项
全配置下CONFIG_DEBUG_SECTION_MISMATCH会极大加重链接器和modpost的处理负担,直接关掉:
要么用make menuconfig进入Kernel hacking->Debug section mismatch取消勾选;要么直接修改.config文件:# 找到这一行改成n CONFIG_DEBUG_SECTION_MISMATCH=n给modpost放宽内存限制
编译时传递MODPOST_FLAGS=-X参数,强制modpost使用更大的内存阈值来处理超大目标文件:make MODPOST_FLAGS=-X -j$(nproc)简化调试信息相关配置
全配置下有些调试子选项会让调试信息体积异常膨胀,比如CONFIG_DEBUG_INFO_SPLIT,保留核心的调试信息选项即可,修改.config:CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_NONE=n CONFIG_DEBUG_INFO_SPLIT=n修复配置依赖后重新编译
修改完配置后,先让内核自动处理依赖关系,再编译:make olddefconfig make -j$(nproc)
内容的提问来源于stack exchange,提问作者Absoler
相关产品推荐
相关产品推荐

