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
相关产品推荐
相关产品推荐

