错误如下:
在这里插入图片描述
在这里插入图片描述
针对第一个问题:
ERROR: Logfile of failure stored in: /home/xujiangfeng/petalinux/XU-ZYNQ-MPSOC/build/tmp/work/cortexa72-cortexa53-xilinx-linux/perl/5.34.0-r0/temp/log.do_package_write_rpm_setscene.204076
错误原因:构建系统尝试从 sstate-cache(共享状态缓存) 中读取预编译的中间结果(例如 perl 包的编译结果),以加快编译速度;但在本地或镜像路径中找不到对应的 sstate 缓存文件;因此 Yocto 会发出警告并改为从头编译(run full task)。
解决方法:PetaLinux 官方提供了公共的 sstate 镜像服务器,用于加速构建。
1、打开 project-spec/meta-user/conf/petalinuxbsp.conf,添加 Xilinx 的sstate镜像(根据你的 Petalinux 版本调整 URL):

# 设置公共 SSTATE 镜像
SSTATE_MIRRORS ?= "file://.* http://petalinux.xilinx.com/sswreleases/rel-v2022/arm/sstate-cache/PATH"

PATH 由 Yocto 自动替换,不需要修改。
2、保存后重新编译:

petalinux-build

针对第二个错误:
ERROR: libgcc-11.2.0-r0 do_package_qa_setscene: Error executing a python function in exec_func_python() autogenerated:
错误原因:
1、网络问题:BitBake fetch 任务尝试从远程下载 sstate 包或者源码,但超时或连接失败。错误日志里有 socket.timeout,很可能同样影响 libgcc。
2、损坏或缺失的 sstate cache:如果之前构建中断或 sstate 缓存损坏,BitBake 无法使用缓存包,会报这个错误。
3、本地目录权限问题:BitBake 写 sstate-cache 或 tmp 目录权限不足,也可能导致执行失败。
解决办法:清理 sstate cache 强制重新构建。

petalinux-build -x mrproper
petalinux-build -x cleansstate
petalinux-build

cleansstate 会清空 sstate cache,让所有包重新编译,而不是依赖缓存。
重新编译后没有再显示相关错误,因此得到总结:如果构建 sstate cache 失败,经过第一种方式添加 Xilinx 的sstate镜像后,应该执行一次 petalinux-build -x cleansstate 清除之前构建失败的 sstate cache 缓存,最后在重新编译工程。
注:网络不稳定或者中途断网也会导致相关错误!!!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐