我正在尝试为 Yocto 中的自定义库创建一个配方。我目前收到此错误:
ERROR: ... do_package: QA Issue: pot-plugin: Files/directories were installed but not shipped in any package:
/usr/lib/qt5/plugins/mediaservice/a.so.1.0
/usr/lib/qt5/plugins/mediaservice/a.so.1
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
Run Code Online (Sandbox Code Playgroud)
我已经设置了这些,FILES_${PN}但在这种情况下,Yocto 抱怨那些符号链接太多,并且不属于该包。实际上,正确的做法是将它们也从 sysroot 本身中删除。因此,我尝试定义该do_install步骤,但在创建包之前找不到如何删除这些步骤。我做了类似的事情:
do_install {
rm <some_path>/a.so.1.0
rm <some_path>/a.so.1
}
Run Code Online (Sandbox Code Playgroud)
但我找不到正确的使用路径。有人可以解释这是否是解决问题的正确方法,如果是,我应该使用什么路径在安装这些文件之后和创建包之前删除这些文件?谢谢!
让\xe2\x80\x99s 说我有一个食谱foo.bb包含:
\nPACKAGECONFIG[option1] = "..."\nPACKAGECONFIG[option2] = "..."\nRun Code Online (Sandbox Code Playgroud)\n现在,我想为 bar 包编写一个配方。为了运行,bar需要使用选项option1而不是option2来编译包foo。
\n我知道 Yocto 的灵感来自于 Gentoo Portage。在portage中,这种依赖关系会这样写(https://devmanual.gentoo.org/general-concepts/dependency/#built-with-use-dependencies):
\nRDEPENDS="foo[option1,-option2]"\nRun Code Online (Sandbox Code Playgroud)\n我\xe2\x80\xaf如何与Yocto做同样的事情?
\n当我使用 Yocto Kirkstone 为机器 beaglebone-yocto 构建核心映像时,我得到一个文件/boot/extlinux/extlinux.conf. 该文件如下所示:
default Yocto
label Yocto
kernel /zImage
fdtdir /
append root=PARTUUID=f8fbccd5-02 rootwait console=ttyS0,115200
Run Code Online (Sandbox Code Playgroud)
我可以在标签 a 内附加DEVICETREE /mycustom.dtb,它将在下次启动时加载 mycustom.dtb 作为设备树。我不知道如何将其包含在 Yocto 构建中,因此mycustm.dtsi会被编译并添加到 /boot 文件夹中。
我尝试过使用如下食谱mycustom.dts进行编译:mycustom.dtb
inherit devicetree
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI = " \
file://mycustom.dts;subdir=git/overlays \
"
S = "${WORKDIR}/git/overlays"
COMPATIBLE_MACHINE = ".*(beaglebone).*"
Run Code Online (Sandbox Code Playgroud)
它构建正确,但是当我在图像中使用它时,我收到错误:No match for argument: mycustom因为do_rootfs: Could not invoke dnf. 看起来 do_root 作为mycustom参数添加到命令中,导致命令失败。
Yocto 是新手,但仍在熟悉它,因此可能是一个天真的问题,因此我对何时为包创建 inc 或 bb 文件进行了澄清。假设我有一个包 A 并且我的项目已经有一个配方 bb 文件A.bb。现在,如果我要为不同的项目 B 添加新的依赖项,那么我仍然不确定是否应该为项目 B 创建一个 inc 文件,而不是像这样B.inc将其包含在其中,还是应该为项目创建一个 bb 文件B 相反,让我们说and 而不是添加到 中。A.bbrequire B.incB.bbinherit BA.bb
我的另一个澄清是,如果我理解正确,你的包可以覆盖/附加内容到 bb 食谱,就像X.bb
创建 bbappend 文件一样X.bbappend覆盖/附加内容到 bb 配方,但对于 can inc 文件也是如此,以及您的包创建什么文件等。提前致谢。
我还需要询问如何在 .inc 文件中应用补丁,例如,如果我需要在我发现的内容中应用补丁,A.bb如果代码配方看起来像这样
SRC_URI = "git://foopackage;protocol=ssh;branch=mainline;/
file://foo.patch \
"
Run Code Online (Sandbox Code Playgroud)
我需要做的就是在子文件夹 foo 中添加一个 foo.patch ,它将被应用,对于 inc 文件也是如此,即如果我有B.inc文件并且它是这样的
SRC_URI = "git://barpackage;protocol=ssh;branch=mainline;/
file://bar.patch \
"
Run Code Online (Sandbox Code Playgroud)
这是否意味着我需要在B.inc要应用补丁的文件夹中创建一个子文件夹栏。
yocto ×4
yocto-recipe ×4
bitbake ×1
device-tree ×1
linux-kernel ×1
openembedded ×1
yocto-layer ×1