我在一个文件夹中克隆了Poky,如下所示:
~/Yocto/poky/
Run Code Online (Sandbox Code Playgroud)
如快速入门指南中所述,我检查了Rocko 的一个分支
我成功地qemu根据指南创建了一个。我希望创建 Raspberry Pi Image,因此我将meta- raspberrypi克隆到~/Yocto/poky/目录中,并在同一目录中打开嵌入。因此当前的目录结构如下:
~/Yocto/poky/
-- meta-raspberrypi/
-- meta-openembedded/
Run Code Online (Sandbox Code Playgroud)
我执行source oe-init-build-env和变化的内容local.conf和bblayers.conf如下
MACHINE = "raspberrypi2"
Run Code Online (Sandbox Code Playgroud)
BBLAYERS ?= " \
/home/<user>/Yocto/poky/meta \
/home/<user>/Yocto/poky/meta-poky \
/home/<user>/Yocto/poky/meta-yocto-bsp \
/home/<user>/Yocto/poky/meta-openembedded/meta-oe \
/home/<user>/Yocto/poky/meta-openembedded/meta-multimedia \
/home/<user>/Yocto/poky/meta-openembedded/meta-networking \
/home/<user>/Yocto/poky/meta-openembedded/meta-python \
/home/<user>/Yocto/poky/meta-raspberrypi \
"
Run Code Online (Sandbox Code Playgroud)
之上 bitbake rpi-basic-image
ERROR: ParseError at /home/<user>/Yocto/poky/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb:9: Could not inherit file classes/pypi.bbclass
Run Code Online (Sandbox Code Playgroud)
在Yocto 邮件列表上,通过添加openembedded/meta-python …
在“嵌入式 Linux 系统与 Yocto 项目”一书中,第 4 章包含一个名为“HelloWorld - BitBake 风格”的示例。我在尝试让旧示例与“Sumo”2.5 版配合使用时遇到了很多问题。
如果您像我一样,按照本书的说明遇到的第一个错误是您复制bitbake.conf并得到:
ERROR: ParseError at /tmp/bbhello/conf/bitbake.conf:749: Could not include required file conf/abi_version.conf
Run Code Online (Sandbox Code Playgroud)
而且复制过来之后abi_version.conf,你一直发现需要移动的交叉连接的文件越来越多,然后出现了一些相对路径错误......有没有更好的方法?
我正在用 Yocto 构建一个图像,并且需要在上游树中修补一个 BitBake 类。我不想修改上游源,而是希望将修改添加到本地层。
对于 BitBake recipe,我会使用一个.bbappend文件。一个类应该使用什么?
我是 Yocto 和 Embedded 的新手,想要这样的东西,
$ git clone https://github.com/babelouest/orcania.git
$ git clone https://github.com/babelouest/yder.git
$ git clone https://github.com/babelouest/ulfius.git
$ cd orcania/
$ make && sudo make install
$ cd ../yder/
$ make && sudo make install
$ cd ../ulfius/
$ make && sudo make install
Run Code Online (Sandbox Code Playgroud)
请帮助创建图层和配方。
谢谢。
我正在尝试do_compile_append通过打印消息来调试 Yocto 配方中的函数:
do_compile_append() {
for i in 1 2 3 4 5
do
echo "My yocto Looping ... number $i"
done
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,我添加了一个循环来在构建期间回显一些消息。但是,当我运行bitbake构建它时,我没有看到这些消息输出到我的终端。
输出记录在哪里?
是否可以自定义Build Configuration在每个 bitbake 调用开始时打印的转储?我正在使用不同的标志和覆盖来微调开发/测试/部署模式等内容,我会将这些打印到终端以确保我没有错过设置任何重要的标志。那可能吗?如果是,如何实现这一目标?
我有一个 bitbake 配方,在其中我需要先检查远程服务器的可用性,然后再从远程服务器下载一些包。为此,我使用 ping,如下所示:
ping ${HOST} -c1 -w4 1>/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo "ERROR: Unable to reach ${HOST}. Exiting now with code $?..."
exit $?
fi
Run Code Online (Sandbox Code Playgroud)
上面的代码在终端中运行得很好,我得到了相应的退出代码:0 表示 OK,非零表示 NOK。
然而,与 bitbake 配方上的代码完全相同,退出代码$?始终为空。相反,bitbake 本身会捕获错误代码,然后继续执行。稍后,当尝试解压未下载的文件时,它会失败。那时,我收到了有关ping更早抛出的非零退出代码的警告。目前看起来是这样的:
if [ "$(ping ${HOST} -c1 -w4 1>/dev/null 2>/dev/null)" = 0 ]; then
echo "ERROR: Unable to reach ${HOST}. Exiting now..."
exit 1
fi
# Some other stuff here...
ar -x ${BUILDDIR}/tmp/deploy/ipk/all/rheas_*.ipk
Run Code Online (Sandbox Code Playgroud)
我得到:
ERROR: rheas-0.0-r0 do_compile: Function failed: …Run Code Online (Sandbox Code Playgroud) 我设置了yocto开发环境,在其中我可以在目标中进行 bitbake 并运行一个简单的 C++ 应用程序。现在我想尝试使用简单的 Qt 应用程序。当我执行bitbake-layers show-layers时,它在列表中显示 meta-qt5...
meta-qt5
/home/prc1cob/repo/out/salt/kawa/../../..//os/external/meta-qt5 7 元-oe
/home/prc1cob/repo/out/salt/kawa/ ../../../build/yocto/meta-openembedded/meta-oe 6
有了这个,我假设 qt5 已经存在于我的 yocto 构建中。如何编写 .bb 文件来构建一个简单的 HelloWorld qt 应用程序,如下所示...
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Hello World";
return a.exec();
}Run Code Online (Sandbox Code Playgroud)
谢谢你!!
我有一些自己编写的 yocto 配方,它们会产生 yocto sstate-cache 机制的问题(比如当依赖项发生变化时不重建配方)。有没有办法在每个配方的基础上禁用状态缓存?
在互联网上搜索我只能找到非常古老且现已损坏的机制:
https://patchwork.openembedded.org/patch/17039/
或者仅部分禁用功能:
https://patchwork.openembedded.org/patch/130719/
我的 Yocto 版本是 Zeus 及以上。
谢谢并欢呼!
我正在尝试创建一个使用自动工具的相当简单的BitBake食谱,您可以在这里看到它:
SUMMARY = "an example autotools recipe"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit autotools
SRC_URI = "file://${TOPDIR}/piu/geo_utilities"
S = "${TOPDIR}/piu/geo_utilities"
Run Code Online (Sandbox Code Playgroud)
使用此配方的默认程序包启动BitBake构建后, do_configure失败并显示以下内容:
configure: line 12851: syntax error near unexpected token `GLIB,'
configure: line 12851: `PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.12.3)'
Run Code Online (Sandbox Code Playgroud)
当我跑步时ldd --version,得到以下信息:ldd (GNU libc) 2.17。
我已经找到了几个类似Google Groups帖子和GitHub问题的站点,这些站点表明可以通过更新pkg-config来解决该问题。我正在运行Red Hat,所以我已经运行了sudo yum install pkgconfig它返回了pkgconfig-0.27.1-4.el7.x86_64 already installed and latest version。
(这个问题跟在后面这个问题是由回答者解决)