我最近开始尝试构建基于Linux的嵌入式系统,这与我通常处理的嵌入式设备大相径庭,因为我在那里拥有 完全 的控制权。
作为其中一部分,我正在研究Yocto/bitbake/OpenEmbedded构建系统。
有一件事让我很难理解,那就是“层”概念,所以我正试图弄清楚层如何使用/影响其他层。
根据我目前的理解,.bb
配方文件使用 require
简单地包含另一个文件,类似于C语言的 #include "myheader.h"
,它通常会在本地查找。
在“上面”层中的 .bbappend
文件将自动包含基础文件,然后对其进行更改,类似于固有的 require
。
相比之下,inherit
关键字查找 .bbclass
类文件的方式与定位 .bb
文件的方式非常相似,并从它们那里继承所有详细信息(有点像 #include <stdio.h>
,再次提醒,它通常会在系统区域(a)查找)。
因此,我的第一个问题是:我的理解正确吗?或者我太简单化了吗?
那么,我的第二个问题涉及使用 BBEXTENDS
与我目前的理解。如果我们已经能够通过使用 require
扩展配方,那么在 BBEXTENDS
变量中列出该等配方的目的是什么?
(a) 是的,我知道它们在头文件来自哪里方面都是完全依赖于实现的,我只是在谈论它们的共同用途。