如何借助Yocto Project为Banana Pi M1+构建镜像?构建遇报错
嘿,我来帮你排查Yocto构建Banana Pi M1+镜像时遇到的问题!基于你用Ubuntu 16.04 LTS搭配Yocto Rocko版本的环境,先给你列几个高频的排查方向(毕竟你提到报错开头是C...,大概率是编译相关的问题):
1. 确认Ubuntu系统依赖安装完整
Yocto Rocko在Ubuntu 16.04上需要一堆基础编译依赖,先检查你有没有装全:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm
另外注意:Rocko版本仍依赖Python 2,Ubuntu 16.04默认python可能指向Python 3,你可以用下面的命令切换到Python 2:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2 sudo update-alternatives --config python
执行最后一条命令后选择Python 2.7的选项即可。
2. 对齐meta-sunxi的分支版本
你克隆的meta-sunxi默认分支可能和Yocto Rocko不兼容,Rocko对应的meta-sunxi分支是rocko,赶紧切换试试:
cd meta-sunxi git checkout rocko git pull
Yocto的元层必须和主Poky分支严格匹配,版本不对会引发各种编译冲突,这是新手常踩的坑。
3. 验证bblayers.conf的元层配置
虽然你说已经添加了meta-sunxi,但还是要确认build/conf/bblayers.conf里的路径正确,比如:
BBLAYERS ?= " \ ${TOPDIR}/../poky/meta \ ${TOPDIR}/../poky/meta-poky \ ${TOPDIR}/../poky/meta-yocto-bsp \ ${TOPDIR}/../meta-sunxi \ "
要保证路径是相对于TOPDIR的正确路径,没有拼写错误或者目录不存在的情况。
4. 清理构建缓存后重试
有时候缓存文件损坏会导致莫名其妙的编译错误,先清理临时文件和部分缓存:
# 清理目标镜像的编译缓存 bitbake -c cleanall core-image-minimal # 删除临时构建目录 rm -rf tmp/
之后重新初始化环境再构建:
source poky/oe-init-build-env build bitbake core-image-minimal
5. 提供完整报错信息
如果上面的方法都没用,建议把完整的报错内容贴出来——比如具体是哪个Recipe编译失败、错误提示的完整内容、编译时的命令输出细节,这样才能精准定位问题(你提到的“报错C...”太笼统啦,没法直接判断是编译器错误、依赖缺失还是Recipe配置问题)。
内容的提问来源于stack exchange,提问作者Arjun C

