gpt4 book ai didi

yocto - yocto 中的机器特定层

转载 作者:行者123 更新时间:2023-12-02 09:49:17 26 4
gpt4 key购买 nike

我想为一台新机器(称之为A)添加一些从上游获取的层,主要是为了使用这些层提供的机器A配置文件、内核和u-boot。然而,新层有几个 bbappend 文件(还有 bb 文件),其版本与我的 yocto 项目中其他机器的层不同。

例如,机器 A 有自己的 gstreamer1.0_1.8.1.bb 和 bbappend 文件。 其他机器正在使用gstreamer1.0_1.6.1.bb。当我为另一台机器构建镜像时,它会构建版本 1.8.1,因为 Yocto 将始终寻找最新的兼容版本的包并构建它。但是,gstreamer1.0_1.8.1.bbappend文件是专门为A机器编写的,不适用于其他机器并导致错误。不仅仅是 gstreamer,还有更多。

我在 bblayers.conf 文件中得到了类似 BBLAYERS_A += "new_layers\..." 的想法,但不幸的是它并没有按照我想要的方式工作。

我的另一个想法是:

BBMASK_B = "new_layers \ ..."
BBMASK_C = "new_layers \ ..."
BBMASK_D = "new_layers \ ..."
BBMASK_E = "new_layers \ ..."
BBMASK_F = "new_layers \ ..."
BBMASK_G = "new_layers \ ..."
BBMASK_H = "new_layers \ ..."
BBMASK_I = "new_layers \ ..."
...

它对我来说看起来不太好,而且我怀疑它不会起作用。我认为构建过程是首先加载 bblayers.conf 文件,然后加载 local.conf。因此,在知道要构建什么机器之前,需要先部署各层。

我的问题是如何使这些新添加的层仅适用于机器 A,但不会被其他机器使用。

最佳答案

您应该尝试使 BSP 层仅在使用该层中的任何机器时才产生任何影响。

在您的示例中,gstreamer1.0_1.8.1.bb,您应该添加

COMPATIBLE_MACHINE = "^machinea$"

注意,它是一个正则表达式,因此通过省略前导 ^ 和结尾 $,您可能会错误地匹配类似的命名机器。

另请注意,我将您的机器名称示例 A 更改为 machinea,因为机器需要使用小写字母。

如果您要添加 .bbappend 文件,通常会让它们修改构建,例如。

SOME_VAR_machinea

如果您要覆盖文件,通常会将它们放入如下结构中:

recipes-support/myrecipe/myrecipe/machinea/some-file

在这种情况下,请注意额外的子目录machinea,它将确保some-file仅用于该特定机器。

关于yocto - yocto 中的机器特定层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com