Yocto Project 2.4.2构建Intel MinnowBoard失败求助
先给你吃个定心丸:Yocto 2.4(代号Rocko)绝对不是什么“过于新且不稳定”的版本——它是2018年发布的长期支持(LTS)版本,稳定性经过大量验证,你遇到的问题大概率是依赖配置或仓库同步的细节没处理好,和版本本身稳不稳没关系。
咱们一步步来解决你遇到的两个核心问题:
1. 搞定"ninja: command not found"错误
你说已经装了ninja,但Ubuntu 16.04的官方源里,ninja的包名其实是ninja-build,不是单纯的ninja。先确认你装对了包没:
sudo apt-get update && sudo apt-get install ninja-build
要是已经装了还是报错,十有八九是ninja的路径没进当前shell的PATH环境变量。先验证下它的位置:
which ninja-build
如果输出是/usr/bin/ninja-build,要么给它整个软链接让系统能识别ninja命令:
sudo ln -s /usr/bin/ninja-build /usr/bin/ninja
要么在你的构建配置local.conf里加一行环境变量配置:
# 在local.conf末尾添加 EXPORT PATH="${PATH}:/usr/bin"
还有个办法是直接在bitbake里指定ninja路径,同样加在local.conf:
EXTRA_OEMAKE += "NINJA=/usr/bin/ninja-build"
2. 解决Git仓库标签不匹配的问题
你执行的git checkout tags/8.0-rocko-2...命令有俩问题:
- meta-intel的标签得和poky版本对应上:Yocto Rocko(2.4)对应的meta-intel分支是
rocko,对应的标签是8.0-rocko,你多打了-2...这些字符,自然找不到标签。 - 其实用分支比用标签更稳妥,因为分支会包含最新的bug修复,直接切到Rocko分支就行:
cd ~/Yocto/poky/meta-intel git checkout rocko
要是你的meta-intel仓库没同步最新的Rocko代码,先拉一下:
git pull origin rocko
另外,提醒下你,克隆meta-intel的时候最好直接指定Rocko分支,避免后续版本不匹配:
git clone git://git.yoctoproject.org/meta-intel -b rocko
版本选择建议
要是你在Rocko上折腾半天还是不顺,可以试试Yocto **Dunfell(3.1)**版本——它也是长期支持版本,稳定性更强,对Ubuntu 16.04兼容性拉满,而且社区维护和文档支持都更完善。Dunfell支持到2023年,相比Rocko修复了更多bug,功能也更全,适合用来做实际项目。
内容的提问来源于stack exchange,提问作者Fritz

