我是Yocto的新手,我为默认计算机(x86-qemu)构建了core-image-sato。我在添加配方时遇到以下问题:
错误:没有提供“系统”的内容(但/home/srawat/tree/yocto/yocto_x86/poky/meta/recipes-connectivity/bluez-alsa/bluez-alsa.bb取决于或以其他方式要求它)
已跳过systemd:缺少必需的发行版功能'systemd'(不在DISTRO_FEATURES中)
错误:必需的构建目标'bluez-alsa'没有可构建的提供程序。缺少或无法构建的依赖链为:['bluez-alsa','systemd']
现在包括“ systemd”模块的方法是什么?或
IOW通常,如何在映像中包括依赖包(谈论layers.openembedded.org的现有包,没有新包?
此外,我还有更多现有软件包要添加,将使用建议的方法添加它们。
提前感谢
最好包括提供配方的层,这可能有助于引入所需的直接和间接依赖关系,并且您还看到了缺少的依赖关系问题,但是故事的另一面,源层可能具有对其他层的进一步依赖,这可能是问一个添加单个配方需要什么的问题。
因此,在您的情况下,选择樱桃食谱似乎是一种更好的方法,因为源层有很多dep,而且此给定的食谱仅依赖于核心层。
但是,您的问题是您的发行版策略不使用systemd,但是此配方假定已启用systemd。所以你有两种方法
通过在local.conf中添加以下内容来启用发行版systemd
DISTRO_FEATURES_append =“ systemd”VIRTUAL-RUNTIME_init_manager =“系统”DISTRO_FEATURES_BACKFILL_CONSIDERED =“ sysvinit”VIRTUAL-RUNTIME_initscripts =“”
从配方中删除对systemd的需求
更改
DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc"
to
DEPENDS += "alsa-lib bluez5 glib-2.0 sbc"
但是这意味着您将没有存根来启用/从此程序包启动/远程/启动/停止服务。由该层的配方文件为systemd提供将systemd用作初始化系统see]时,您将发现其中的开箱即用
如果需要,您可能需要编写自己的初始化脚本来启动它您的项目