编译Linux内核遇帧大小警告及Makefile Error 2,求助技术支持
Linux内核编译:帧大小警告与make error 2问题解决
问题还原
编译过程触发警告:
fs/jffs2/xattr.c: In function ‘jffs2_build_xattr_subsystem’: fs/jffs2/xattr.c:887:1: warning: the frame size of 1152 bytes is larger than 1024 bytes [-Wframe-larger-than=]
887 | }
| ^
最终编译失败,报错:
make: *** [Makefile:2021:.] error 2
解决步骤
1. 屏蔽帧大小警告
这个警告是gcc对函数栈帧大小的检测触发的,部分场景下会被当作错误终止编译。可以针对单个文件关闭该警告:
make CFLAGS_fs/jffs2/xattr.o+=-Wno-frame-larger-than
或者直接修改内核根目录的Makefile,在文件末尾追加:
CFLAGS_fs/jffs2/xattr.o += -Wno-frame-larger-than
2. 定位error 2的具体根源
error 2是make的通用失败码,必须查看它之前的编译输出才能找到真正问题。执行以下命令保存完整编译日志:
make 2>&1 | tee kernel_build.log
打开kernel_build.log,搜索error关键词,找到在make: *** [Makefile:2021:.] error 2之前的具体编译错误(比如符号未定义、依赖缺失、语法错误等),这才是解决问题的核心。
3. 额外排查点
- 检查内核配置:运行
make menuconfig,找到JFFS2文件系统的配置项,尝试关闭部分XATTR相关扩展功能后重新编译测试。 - 清理编译残留:执行
make clean && make mrproper,清除旧编译缓存和配置文件,重新配置后编译。 - 编译器版本适配:如果使用较新gcc,尝试降级到内核推荐的稳定版本;反之则升级gcc,避免版本兼容性问题。
内容的提问来源于stack exchange,提问作者PD-Kerman
相关产品推荐
相关产品推荐

