初次编译rk3568(rk3576)Linux 6.1内核踩坑记录:从报错终止到成功解决的完整流程 电子说
很多刚接触瑞芯微 rk 系列芯片开发的小伙伴,在初次编译基于 Linux 6.1 内核的系统时,很容易因为环境依赖问题卡壳。最近我在编译 rk3576(rk3568 流程类似)Linux 6.1 内核时就遇到了典型报错,从定位问题到最终解决踩了不少小坑,今天把完整过程整理出来,帮大家少走弯路。

按照官方文档配置好编译环境后,我执行了内核编译命令,一开始流程正常,直到终端突然弹出一连串错误信息,编译直接终止。
仔细看报错日志,核心提示有两个:
1.明确指出“Your gmp header is missing”—— 也就是 gmp 相关的头文件缺失();
2.后续跟着一系列执行失败的日志,比如“Running /home/sc/rk3576_linux/device/rockchip/common/scripts/mk-kernel.sh - do_build failed!”,且 exit code 为 1(、),这说明是依赖缺失导致编译脚本执行失败。
其实到这里,报错信息已经很“贴心” 了 —— 不仅告诉我们缺什么,还直接给了解决方案。

在“gmp header is missing” 这句话下面,终端直接给出了安装命令:“Please install it: sudo apt-get install libgmp-dev”(、)。
这里要划个重点:Linux 下编译报错时,先仔细看报错日志的 “建议操作”,很多时候官方或编译器已经把解决方案直接写在日志里了,不用盲目去搜教程。
我当时没多想,直接复制了这个命令开始执行,没想到后续还有个小插曲。
在终端输入报错提示里的命令:
sudo apt-get install libgmp-dev()
输入 sudo 密码后,系统会自动开始处理:
•先读取软件包列表,分析依赖关系(、);
•然后提示会“同时安装 libgmpxx4ldbl”,这是 libgmp-dev 的依赖包,属于正常情况();
•最终确认“新安装 2 个软件包。
输入“y” 确认后,系统开始下载并自动安装,最后提示 “正在处理用于 libc-bin 的触发器”,看起来安装成功了。
本以为安装完就能正常编译,结果重新执行编译命令后,报错依然存在。这时候我才意识到,可能是之前的编译缓存或环境变量没刷新,于是做了两个操作:
1.卸载无效依赖并重新安装:
先尝试卸载可能冲突的 libmpc-dev(虽然终端提示 “libmpc-dev 未安装,不会被卸载”)(到),再重新执行sudo apt-get install libmpc-dev,确保相关依赖完整()。
2.补充安装环境变量相关工具:

因为报这个错误,后来看了一下源码目录就有这个依赖,基本上是环境配置没配好

参考瑞芯微编译环境的常见配置,又执行了两个命令:

◦sudo apt-get install binfmt-support qemu-user-static(用于处理不同架构的二进制文件,);
◦sudo dpkg -i ubuntu-build-service/packages/* 和sudo apt-get install -f(修复 deb 包依赖,确保环境变量配置正确,、)。
做完这些后,我关闭了当前终端重新打开(刷新环境变量),再次执行编译命令—— 这次终于顺利跑通,没有再出现报错!
1.优先看报错日志的“直接提示”
像这次的 gmp 头文件缺失,报错里直接给了安装命令,跟着做就能解决 80% 的问题,不用一开始就去搜复杂的教程。
2.依赖安装后记得“刷新环境”
有时候依赖安装成功了,但编译脚本读不到新安装的文件,关闭终端重新打开、或执行source /etc/profile刷新环境变量,往往能解决“安装了还报错” 的问题。
如果大家在编译 rk3568/3576 等芯片的 Linux 内核时,遇到类似的依赖报错,不妨按照这个流程试试。如果还有其他踩坑经历,欢迎在评论区交流,一起帮更多开发者避坑~
全部0条评论
快来发表一下你的评论吧 !