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

Vivado升级含授权IP后Yocto编译quilt-native报错求助

解决Yocto编译quilt-native时pyenv参数过长及依赖缺失问题

问题分析

设计升级为含授权IP的版本后,硬件生成环节无致命问题,但Yocto编译quilt-native-0.66-r0时触发/home/user/.pyenv/libexec/pyenv-exec参数列表过长错误。核心矛盾在于:bitbake环境依赖pyenv存在,但pyenv传递的参数因硬件升级后环境变量/路径信息增多,超出系统命令行长度限制。

可行解决方案

1. 临时绕过pyenv编译quilt-native

编译该包时临时指定使用系统Python,跳过pyenv的参数传递:

# 方法1:临时覆盖pyenv版本为system
PYENV_VERSION=system bitbake quilt-native

# 方法2:临时清空pyenv相关环境变量后编译
unset PYENV_ROOT PYENV_VERSION PYENV_EXEC
bitbake quilt-native
# 编译完成后恢复pyenv配置(若需要)
eval "$(pyenv init -)"

完成quilt-native编译后,再正常执行全镜像编译即可。

2. 扩大系统命令行参数长度限制

Ubuntu 20.04默认的kernel.arg_max(命令行参数最大长度)可能不足以应对新增的硬件相关参数,临时调大该值:

# 临时生效,重启后失效
sudo sysctl -w kernel.arg_max=2097152

若需要永久生效,编辑/etc/sysctl.conf添加以下内容,再执行sudo sysctl -p:

kernel.arg_max=2097152

3. 精简pyenv配置减少环境变量

检查~/.bashrc或~/.zshrc中的pyenv初始化脚本,移除不必要的配置项:

  • 避免将过多pyenv相关路径追加到PATH
  • 将eval "$(pyenv init -)"替换为更精简的初始化方式,比如仅初始化全局版本:
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    pyenv global <你的默认Python版本>
    

4. 修改quilt-native配方强制使用系统Python

找到Yocto源码中quilt-native_0.66.bb文件(通常在recipes-devtools/quilt/目录下),添加预编译钩子清空pyenv相关变量:

do_compile_prepend() {
    unset PYENV_ROOT
    unset PYENV_VERSION
    export PATH=/usr/bin:$PATH
}

保存后重新编译即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:32:33