yocto之bitbake基础知识

bitbake基础知识

1 基本概念

recipes,即指所有配置文件,bb文件以及bbappend后缀的文件,主要作用:

  • 描述package信息,如作用,主页,许可等
  • recipe的版本
  • 存在的依赖关系,如requeir,include等
  • 源码信息,如何获取,补丁文件
  • 编译信息,
  • 安装信息

configuration,即以conf后缀的文件,主要作用:

  • 定义各种配置变量,控制编译流程
  • 定义机器配置,发布信息配置,编译器配置,通用配置以及用户配置等
  • 根本的配置bitbake.conf

classes,即以bbclass后缀的文件,主要作用:

  • 抽象的recipes,主要为了共享
  • 主要定义了基本的task,如fetch、unpack、configure、compile、install、package等
  • 也可能被重写

layers,主要是功能模块化,一是隔离不同的实现,二是方便移植集成。一般的格式是

meta-layer1
meta-layer2
classes
config
recipes-layer3
items
foo.bb
file

append,即以.bbappend后缀的文件,主要用来扩展或重写recipes里的信息,它是以bb文件为基础。同时支持扩展符匹配,如

busybox_1.21.%.bbappend

busybox_1.21.1.bb
busybox_1.21.2.bb
busybox_1.21.3.bb

2 基本语法

https://www.cnblogs.com/chegxy/p/15731481.html

https://www.cnblogs.com/chegxy/p/17135106.html

2.1 变量赋值

bitbake的变量,通过=号赋值,如果值用引号包起来,里面的空格保留;如果未赋值,值为none;如果值比较长,可用反斜杠分行赋值

VARIABLE = "value"   值为value
VARIABLE = " value"  值为左空+value 
VARIABLE = "value "  值为右空+value 
VARIABLE = ""        值为none
VARIABLE = " "       值为空
VARIABLE = 'I have a " in my value' 单引号中的双引号保留

FOO = "barbaz"  两种等价
FOO = "bar\
baz"

2.2 变量扩展

引用变量扩展,大括号必须

A = "avalbefaoreB"
B = "pre${A}post"   B值为preavalbefaoreBpost,大括号强制
A = "avalafterB"    B值为preavalafterBpost,大括号强制

?号扩展

如果A已赋值(=或?),则保持原样,否则其值为aval

A = "aval"
A ?= "aval"
A ?= "aval" 如果A已赋值(=或?),则保持原样,否则其值为aval,

??号扩展

如果W已赋值(=或?,??不影响),则保持原样,否则其值为x

W = "x"
W ?= "x"
W ??= "x"
W ??= "x"   如果W已赋值(=或?,??不影响),则保持原样,否则其值为x

立即扩展

“:=”, “.=”, “=.”, “+=”, and “=+”

T = "123"
A := "test ${T}"   A为test 123 立即扩展,虽然T后面变了
T = "456"
B := "${T} ${C}"   B为456 cvalappend,因为B在立即扩展时,C未定义,故等到最后,再赋值,最后C有值,故以上
C = "cval"
C := "${C}append"  C为cvalappend

B = "bval"
B += "additionaldata"  B自动加空隔,为bval additionaldata 
C = "cval"
C =+ "test"            C自动加空隔,为test cval

B = "bval"
B .= "additionaldata"  B不自动加空隔,为bvaladditionaldata
C = "cval"
C =. "test"             C不自动加空隔,为testcval

override扩展
关键字
B = “bval”
B:append = " additional data" --》B为bval additional data
C = “cval”
C:prepend = "additional data " --》C为additional data cval
D = “dval”
FOO = “123 456 789 123456 123 456 123 456”
FOO:remove = “123” --》D为456 789 123456 456 456

1扩展时赋值,而不是立即赋值
2不自动加空隔

应用1

inherit foo
FOO = "initial"FOO += "val"           foo.bbclass   -->FOO为initial
FOO:append = " val"    foo.bbclass   -->FOO为initial val

应用2

FOO:append = "bar"
FOO+=baz              -->FOO为bar baz
FOO:append = "baz"    -->FOO为barbaz

变量赋值总结

= 延后赋值
.= 立即赋值 不自动加空格
+= 立即赋值 自动加空格
:= 立即赋值
延后赋值
?? 延后赋值
override 延后赋值 不自动加空格

2.3 变量flag

bitbake支持为变量增加flag,

FOO[a] = "abc"
FOO[b] = "123"
FOO[a] += "456"

DATE = “${@time.strftime(‘%Y%m%d’,time.gmtime())}”

系统flags
[cleandirs] 创建一个空目录(存在删除重建࿰

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值