You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置编译SWUpdate以支持archive功能解决更新报错

解决SWUpdate缺失archive功能的配置与编译问题

1. 确保SWUpdate配置正确开启archive支持

执行bitbake -c menuconfig swupdate进入配置界面,必须开启以下核心选项:

  • Features -> Archive support(对应CONFIG_ARCHIVE=y)
  • Library -> libarchive(对应CONFIG_LIBARCHIVE=y)
  • 若需ZSTD压缩支持,开启Library -> zstd(对应CONFIG_ZSTD=y)
  • 若需SystemD支持,开启Features -> SystemD(对应CONFIG_SYSTEMD=y)

配置完成后,执行bitbake -c savedefconfig swupdate生成defconfig文件,将其放置在你的layer对应swupdate的目录下(例如meta-yourlayer/recipes-support/swupdate/swupdate/defconfig)。

2. 修正swupdate_%.bbappend文件

调整bbappend内容,确保依赖加载和配置生效:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://defconfig"

# 编译阶段依赖
DEPENDS += "libarchive zstd systemd"
# 运行阶段依赖(设备上必须存在这些库才能正常运行SWUpdate)
RDEPENDS:${PN} += "libarchive zstd systemd"

注意:合并重复的依赖项,添加RDEPENDS是为了保证设备运行时能找到所需库文件。

3. 执行正确的编译流程

修改配置后,需先重新编译SWUpdate本身,再生成SWU镜像,避免旧版本组件残留:

# 清理SWUpdate旧构建产物
bitbake -c cleanall swupdate
# 重新编译SWUpdate
bitbake swupdate
# 清理并重新生成SWU更新镜像
bitbake -c cleanall smg-image-swu
bitbake smg-image-swu

4. 验证设备上的SWUpdate版本

烧录新系统镜像(或手动替换设备上的swupdate二进制)后,执行以下命令确认archive功能已启用:

# 查看SWUpdate支持的特性
swupdate -v
# 检查是否链接了libarchive库
ldd /usr/bin/swupdate | grep libarchive

如果输出中包含archive相关的handler,且能找到libarchive库,则说明配置已生效。

5. 常见问题排查

  • 编译时头文件找不到:先单独编译依赖组件bitbake libarchive zstd systemd,确认依赖库已正确构建;检查DEPENDS是否拼写正确。
  • 整体构建失败:尝试先移除SystemD配置,确认archive功能正常后再逐步添加,排查是否存在依赖冲突。
  • 设备上仍报相同错误:确认设备中使用的是重新编译后的swupdate二进制,可手动将build-fb/tmp/deploy/images/imx6ull14x14evk/目录下的swupdate文件传到设备替换/usr/bin/swupdate后再测试。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:25:32