【发布时间】:2016-04-26 17:35:01
【问题描述】:
我有一些仅与特定平台相关的图像(假设有些仅适用于英特尔核心,而另一些仅适用于 sabrelite)。
图像是否可以独立于 local.conf 自动设置构建的 MACHINE 变量?
如果没有,我至少可以让图像拒绝为其他机器构建吗?
我尝试进行一些谷歌搜索,但当然“yocto 图像选择机器”或类似请求只会返回通用 Yocto 教程。
谢谢。
【问题讨论】:
标签: yocto
我有一些仅与特定平台相关的图像(假设有些仅适用于英特尔核心,而另一些仅适用于 sabrelite)。
图像是否可以独立于 local.conf 自动设置构建的 MACHINE 变量?
如果没有,我至少可以让图像拒绝为其他机器构建吗?
我尝试进行一些谷歌搜索,但当然“yocto 图像选择机器”或类似请求只会返回通用 Yocto 教程。
谢谢。
【问题讨论】:
标签: yocto
不,图像不会影响您要为哪台机器构建。
背景:在 OpenEmbedded 中,机器、图像和发行版的概念应该是相互正交的。 IE。任何图像都应该可以为发行版和机器的任何组合构建。 (当然,这在实践中可能并不总是正确的)。
可以通过设置让镜像拒绝构建
COMPATIBLE_MACHINE = "macha"
在您的图像配方中。
另一个想法是,如果映像非常相似,则仅在为正确的机器构建映像时才安装机器特定的包。这可以通过以下方式轻松完成:
IMAGE_INSTALL_append_macha = " package1 package2"
注意字符串中的前导空格。 (_append 不会在您的字符串前面加上空格)。
后半部分,是通常所做的。将图像限制在特定机器上是很少做的事情,至少在公共层中是这样。
注意:macha 是机器的想象名称。
【讨论】:
要根据机器添加包,您可以使用 python 函数base_contains 或base-conditional。例如。 bitbake-how-to-add-package-depending-on-machine
配方中有COMPATIBLE_MACHINE = " " 供输入以检查兼容机器。
building-yocto-image-for-dragonboard-410c-how-to-build-chromium
【讨论】: