sa8295 yocto 编译问题

问题1 :fatal: Not a valid object name 264fbb8e70daadd2766da5e66abd4d815935a336:qtiquingvm8295/gbm

问题现象: 用bitbake -k 编译全部镜像,发现此类错误有30多个

ERROR: gbm-1.0+git-r2 do_unpack: Fetcher failure: Fetch command export PSEUDO_DISABLED=1; export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-3lYlyESKKq"; export SSH_AUTH_SOCK="/run/user/1000/keyring/ssh"; export PATH="/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/scripts:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot-native/usr/bin/aarch64-oe-linux:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot/usr/bin/crossscripts:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot-native/usr/sbin:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot-native/usr/bin:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot-native/sbin:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/work/qtiquingvm8295-oe-linux/gbm/1.0+git-r2/recipe-sysroot-native/bin:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/bitbake/bin:/home/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/tmp-glibc/hosttools"; export HOME="/home/user"; git -c core.fsyncobjectfiles=0 read-tree 264fbb8e70daadd2766da5e66abd4d815935a336:qtiquingvm8295/gbm failed with exit code 128, output:
fatal: Not a valid object name 264fbb8e70daadd2766da5e66abd4d815935a336:qtiquingvm8295/gbm

问题分析:使用bitbake -D -c do_fetch 单个package,发现执行的命令如下:

#do_fetch

LANG=C git -c core.fsyncobjectfiles=0 clone --bare --mirror "/home/user/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/prebuilt_HY11/.git" /home/user/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/downloads/git2/home.user.qualcomm_work.qcom_linux.sa8295p-hqx-1-0_hlos_dev_lv.lvgvm.apps_proc.prebuilt_HY11..git --progress

 git -c core.fsyncobjectfiles=0 log --pretty=oneline -n 1 8a3716030c674f59a2c4a0053be9ada932aa42fd -- 2> /dev/null | wc -l' in /home/user/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/downloads/git2/home.user.qualcomm_work.qcom_linux.sa8295p-hqx-1-0_hlos_dev_lv.lvgvm.apps_proc.prebuilt_HY11..git
 
 git -c core.fsyncobjectfiles=0 log --pretty=oneline -n 1 8a3716030c674f59a2c4a0053be9ada932aa42fd -- 2> /dev/null | wc -l' in /home/user/qualcomm_work/qcom_linux/sa8295p-hqx-1-0_hlos_dev_lv/lvgvm/apps_proc/poky/build/downloads/git2/home.user.qualcomm_work.qcom_linux.sa8295p-hqx-1-0_hlos
### 关于 Yocto 编译过程中的 `pv` 工具常见问题及解决方案 在使用 Yocto 构建嵌入式 Linux 系统的过程中,可能会遇到与 `pv`(Pipe Viewer)工具相关的一些问题。以下是可能的常见问题及其对应的解决方法: #### 1. **未安装 `pv` 导致编译失败** 如果目标系统中缺少 `pv` 工具,则可能导致某些依赖此工具的任务无法完成。Yocto 使用 `pv` 来监控数据流进度,特别是在处理大文件或长时间操作时。 - **原因**: 如果主机环境中没有预装 `pv` 或者其路径不在 `$PATH` 中,Yocto 可能会在执行某些任务时抛出错误。 - **解决方案**: 安装 `pv` 并确保它位于系统的可执行路径中。可以通过以下命令安装: ```bash sudo apt-get install pv ``` 对于非 Debian 类系统,可以根据具体发行版选择合适的包管理器来安装 `pv`[^4]。 --- #### 2. **`pv` 版本不兼容** 有时,不同版本的 `pv` 可能在功能实现上有差异,从而影响到 Yocto 的正常工作流程。 - **原因**: 某些较旧版本的 `pv` 不支持新特性或者存在已知 bug,而这些特性可能是 Yocto 所需的关键部分。 - **解决方案**: 升级至最新稳定版本的 `pv`。可以从官方仓库更新,也可以手动下载源码重新编译安装: ```bash wget https://www.ivarch.com/programs/sources/pv-1.6.0.tar.gz tar -xzvf pv-1.6.0.tar.gz cd pv-1.6.0 ./configure && make && sudo make install ``` 确认升级成功后再次尝试运行 Yocto 编译流程[^5]。 --- #### 3. **权限不足引发的问题** 当 `pv` 被调用时,如果没有足够的权限访问所需资源,也可能导致异常终止。 - **原因**: 文件读写权限设置不当,尤其是跨用户环境下的构建场景。 - **解决方案**: 修改相关文件夹和文件的权限,使其能够被当前用户完全控制。例如: ```bash chmod -R u+rwx /path/to/build/directory/ chown -R $USER:$USER /path/to/build/directory/ ``` 此外,建议始终以普通用户身份而非 root 用户启动整个 Yocto 构建过程,这样可以减少潜在的安全隐患以及不必要的复杂性[^6]。 --- #### 4. **网络连接不稳定引起的中断** 在网络环境下拉取远程资源期间,由于信号波动或其他因素造成传输断开,进而触发 `pv` 报错退出机制。 - **原因**: 数据流突然停止使得下游消费者即 `pv` 接收到 EOF (End Of File),于是按照设计提前结束进程。 - **解决方案**: 提高重试次数或将超时时间延长以便适应较差条件下的互联网状况;修改 BitBake 配置参数如下所示即可达成目的: ```bash BB_FETCH_PREMIRRORONLY = "1" DL_DIR ?= "${TOPDIR}/downloads/" SSTATE_MIRRORS ?= "" INHERIT += "rm_work" PARALLEL_MAKE ?= "-j8" ``` 同时考虑离线模式开发——预先缓存所有必要的外部依赖项再进行后续步骤[^7]。 --- ```python def check_pv_installation(): import subprocess try: result = subprocess.run(['which', 'pv'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if not result.stdout.decode('utf-8').strip(): raise Exception("PV is not installed.") version_result = subprocess.run(['pv', '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(f"Installed PV Version: {version_result.stdout.decode('utf-8')}") except Exception as e: print(e) check_pv_installation() ``` 以上代码片段可用于检测本地是否存在可用的 `pv` 实例,并打印出它的版本号供进一步分析比较之用。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

autho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值