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

如何通过bbappend文件强制Yocto Zeus版本的Git Fetcher拉取指定版本的hiredis库

如何通过bbappend文件强制Yocto Zeus版本的Git Fetcher拉取指定版本的hiredis库

我来帮你解决这个问题,你之前的尝试踩了几个Yocto配方修改的常见坑,咱们一步步调整过来:

问题根源分析

你之前直接覆盖SRC_URI并使用branch=1.0.2是错误的——1.0.2是hiredis的标签(tag),不是分支(branch),Git Fetcher找不到这个分支自然会报错。另外你没更新对应版本的SRCREV(commit哈希),也没调整版本号PV,Yocto还是会沿用原配方0.14.0的逻辑,自然拉取不到新代码。

正确的bbappend配置步骤

首先确保你的bbappend文件路径完全正确:你的自定义层/recipes-extended/hiredis/hiredis_%.bbappend(注意是hiredis不是你之前打错的hredis,通配符%可以匹配原配方的任何版本号)。然后在文件里添加以下内容:

# 强制指定目标版本号,替换原配方的0.14.0
PV = "1.0.2"

# 获取hiredis 1.0.2标签对应的commit哈希(必须替换成真实值)
# 你可以通过GitHub标签页查看,或者用命令:git ls-remote git://github.com/redis/hiredis refs/tags/v1.0.2
SRCREV = "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0"

# 重新定义SRC_URI:保留原配方的补丁,同时指定拉取v1.0.2标签
SRC_URI = "git://github.com/redis/hiredis;protocol=git;tag=v1.0.2 \
           file://0001-Makefile-remove-hardcoding-of-CC.patch"

# 可选:如果hiredis 1.0.2的Makefile已经修复了CC硬编码问题,可删除上面的补丁行

关键参数说明

  1. PV变量:告诉Yocto我们要构建的是1.0.2版本,避免和原0.14.0版本的构建缓存冲突。
  2. SRCREV:指定对应版本的commit哈希,这是Yocto拉取Git代码最可靠的方式(标签可能被修改,但commit哈希是唯一的)。
  3. SRC_URI中的tag参数:明确告诉Git Fetcher拉取v1.0.2标签对应的代码,而不是默认分支。

后续操作

修改完bbappend后,一定要清理旧的构建缓存,避免残留的0.14.0代码干扰:

bitbake hiredis -c cleansstate

然后再重新编译:

bitbake hiredis

额外注意事项

  • 如果编译时出现补丁失败的错误,说明原配方的0001-Makefile-remove-hardcoding-of-CC.patch在1.0.2版本中已经被官方合并了,这时候直接从SRC_URI里删掉这行补丁即可。
  • 一定要确认你复制的SRCREV是hiredis v1.0.2标签对应的真实commit哈希,别用示例里的占位符。

备注:内容来源于stack exchange,提问作者User051209

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:50:31