编译Linux驱动时出现vmlinux段头偏移过大错误求助
编译Linux驱动时vmlinux段头偏移量过大错误的解决方法
问题描述
编译驱动时执行命令:
make -C /home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88 M=`pwd` modules
出现如下错误:
make[1]: Entering directory '/home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88' Building modules, stage 2. MODPOST 1 modules FATAL: section header offset=11259037725229108 in file 'vmlinux' is bigger than filesize=20304380 scripts/Makefile.modpost:91: recipe for target '__modpost' failed make[2]: *** [__modpost] Error 1 Makefile:1502: recipe for target 'modules' failed make[1]: *** [modules] Error 2 make[1]: Leaving directory '/home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88' Makefile:4: recipe for target 'all' failed make: *** [all] Error 2
已尝试make clean和make dtbs操作,问题未解决。
解决步骤
重新编译内核vmlinux文件
- 进入内核源码目录:
cd /home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88 - 执行全量编译(利用多核加速):
make -j$(nproc) - 编译完成后回到驱动目录,重新执行驱动编译命令。
- 进入内核源码目录:
检查并修复vmlinux文件完整性
- 查看vmlinux文件大小:
ls -lh /home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88/vmlinux - 如果文件大小异常或损坏,删除后单独编译vmlinux:
rm /home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88/vmlinux make -C /home/doney/100ask_imx6ull_mini-sdk/Linux-4.9.88 vmlinux
- 查看vmlinux文件大小:
验证驱动编译配置
- 检查驱动Makefile,确认内核路径指定正确,无参数冲突;
- 确认驱动代码与Linux 4.9.88版本兼容,未使用高版本内核专属API。
内容的提问来源于stack exchange,提问作者Doney
相关产品推荐
相关产品推荐

