- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近尝试构建基于 Linux 的嵌入式系统,这与我通常可以完全控制一切的嵌入式系统相去甚远。
作为其中的一部分,我正在研究 Yocto/bitbake/OpenEmbedded 构建系统。
我正在努力解决一件事,那就是分层概念,所以我试图找出层使用/影响其他层的方式。
据我目前的理解,一个 .bb
配方文件使用 require
简单地包含另一个文件,类似于 C 的 #include "myheader.h"
这通常在本地看起来。
一个 .bbappend
“上”层中的文件将自动神奇地包含基本文件,然后对其进行更改,有点像固有的 require
.
相比之下,inherit
关键字查找 .bbclass
class 文件的定位方式与它定位 .bb
的方式大致相同。文件,并从它们继承所有详细信息(有点像 #include <stdio.h>
,它通常又在系统区域(a)中查找)。
所以我问题的第一部分是:我的理解是否正确?还是我太简单了?
我的问题的第二部分然后涉及使用 BBEXTENDS
根据我目前的理解。如果我们已经能够通过使用 require
来扩展配方,在 BBEXTENDS
中列出上述食谱的目的是什么?多变的?
(a) 是的,我知道就 header 的来源而言,它们都完全取决于实现,我只是在谈论它们的常见用途。
最佳答案
Yocto 的学习曲线与其他建筑系统不同,这就是我理解您的困惑的原因。但相信我,这是值得的。您的问题与 BitBake 有关,所以我推荐 BitBake User Manual .只需确保您阅读的版本与您的 poky 修订版相同。
require
和 include
. require
类似于
include
并且可以与
#include
进行比较就像你写的一样,来自 C 和 C++。
include
之间的区别和
require
(来自 BitBake 手册):
The include directive does not produce an error when the file cannot be found. Consequently, it is recommended that if the file you are including is expected to exist, you should use require instead of include. Doing so makes sure that an error is produced if the file cannot be found.
require
,错误
将被提出 .当指向的文件必须存在时,您应该使用 require ,因为它包含必须处理的重要变量/任务。
*.bbappend
机制。 *.bbappend
的情况下- 它非常强大。典型的用法是通过
*.bbappend
从其他层(位于原始配方所在的层上方)向配方添加一些自定义修改的乳清。因为(例如):您不是原始配方的维护者或修改仅在您的项目中使用(那么它应该位于您的元层中)。但你也可以
bbappend
配方在同一层。 BitBake 解析所有层,然后“创建”一个输出并执行它。更多章节
Execution from BitBake man .
inherit
. inherit
机制可用于继承
*.bbclass
其中定义了用于某些特定目的的常见任务,因此您无需自己编写它们,例如:您使用
inherit cmake
或
inherit autotools
当它需要为由 CMake(并且您定义了 CMakeLists.txt)或自动工具(Makefile.am 等)相应构建的源提供输出时,添加到您的配方。
autotools.bbclass
已定义(除其他外)任务:
autotools_do_configure()
所以你不需要从头开始编写它。
*.bbappend
文件并编写自己的函数
do_configure()
这将覆盖来自
*.bbclass
的函数.就像在面向对象的语言中一样,例如 C++ 或 Java。
关于yocto - 要求澄清 Yocto 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288801/
谁能更全面地向我解释 sstate 缓存在 yocto 中是如何工作的? This explanation还不清楚。 我不明白这种情况何时发生: NOTE: Preparing runqueue NO
我想为一台新机器(称之为A)添加一些从上游获取的层,主要是为了使用这些层提供的机器A配置文件、内核和u-boot。然而,新层有几个 bbappend 文件(还有 bb 文件),其版本与我的 yocto
我正在尝试为我的飞思卡尔 imx6 板添加一个新层。它依赖于 meta-fsl-arm 层。 层被添加到 bblayers.conf。但是当我构建机器 imx6dlwisehmi 时,linux-im
如何使用 BitBake 配方向图像添加大量文件? 我将文件添加到图像所遵循的模式如下: SRC_URI += "file://bar" do_install () { install -
我是 Yocto 世界的新手。我正在尝试学习如何使用 Yocto 创建嵌入式 Linux 发行版,到目前为止已经成功地为我的定制板构建了一个基本镜像,并且系统运行良好。我目前正在使用 Yocto 分支
我有一个基于 Rocko 分支的工作 Yocto 构建系统,它为基于 ARM 的目标板生成图像。该板上的一个芯片是一个基于 ARM 的小型微 Controller ,与主 CPU 分开。它需要加载我必
我需要 Yocto 项目的源代码包。我已经拥有整个项目的所有资源,但它们还包括开发工具。 我想有一种方法来生成将为目标图像构建的所有包的(修补的)源。因此,例如,如果目标图像包含 busybox,我想
我有一个在解析过程中进行检查的配方。我想做的不是发出警告或因错误而停止,我想让 yocto 完全忽略配方,就好像它从未存在过一样。如果其他一些配方 RDEPENDS 在它上面,它仍然可能会出错,但否则
在 poky/build/tmp/work 目录中编辑源代码是一种好习惯吗?因为如果我们不小心清理了状态,更改将被删除。 或者,我们可以编辑"file"目录中的源代码以及配方文件,但由于这里的大部分代
我正在尝试使用 core-image-base 配方为 RPi 构建一个控制台图像,但在我的配置中的某个地方,我似乎已经打开了一些增加配方数量的东西由大约 1000 人构建,其中包括许多感觉不属于控制
我最近尝试构建基于 Linux 的嵌入式系统,这与我通常可以完全控制一切的嵌入式系统相去甚远。 作为其中的一部分,我正在研究 Yocto/bitbake/OpenEmbedded 构建系统。 我正在努
我有一些自己编写的 yocto 配方,这些配方会导致 yocto 状态缓存机制出现问题(比如当依赖项发生变化时不重建配方)。 有没有办法在每个配方的基础上禁用状态缓存? 在互联网上搜索我只能找到非常古
我正在为特定硬件构建 yocto(来自 nxp 的 imx6 saber-sdb)。我想从构建过程中删除特定的( Chrome )包。这样 chromium 包就不会被下载、编译,也不会成为目标镜像的
我正在尝试添加新的 c 文件来代替从 git 下载软件包后已经存在的文件。尝试过 bbappend 但原始文件仍然存在。还修改了 src_uri += file://fileone.c 但这是也不覆盖
假设我们有配方“A”和“B”,它们每个都在目标镜像上安装一些二进制文件。但在图像的运行时, 'A' 的二进制结果取决于 'B' 的二进制结果是否存在。如果我这样做的话,我可以使两个二进制文件都存在 I
我是 Yocto 和 Embedded 的新手,想要这样的东西, $ git clone https://github.com/babelouest/orcania.git $ git clone h
我正在尝试添加新的 c 文件来代替从 git 下载软件包后已经存在的文件。尝试过 bbappend 但原始文件仍然存在。还修改了 src_uri += file://fileone.c 但这是也不覆盖
假设我们有配方“A”和“B”,它们每个都在目标镜像上安装一些二进制文件。但在图像的运行时, 'A' 的二进制结果取决于 'B' 的二进制结果是否存在。如果我这样做的话,我可以使两个二进制文件都存在 I
我是 Yocto 和 Embedded 的新手,想要这样的东西, $ git clone https://github.com/babelouest/orcania.git $ git clone h
我使用 Yocto 构建了一个文件系统,使用了 core-image-minimal 的 .bbappend。两个问题: 我如何找出哪个包占用了 rootfs 上的大量存储空间? 除了查看每个包的 $
我是一名优秀的程序员,十分优秀!