Yocto 设置自定义变量、全局变量

Yocto setting custom variables, global variables

提问人:littlebox 提问时间:8/25/2023 更新时间:8/27/2023 访问量:269

问:

Linux 系统包含环境变量,例如 HOME。Yocto 包含 WORKDIR、S 和 D 等变量。

  • bb 文件中使用它们时,可以使用 ,${HOME}a=${WORKDIR}

  • 用于 bbclassw=d.getVar('WORKDIR ')home=os.genenv("HOME")

但是我想添加自定义变量,例如export ABC="19990909"

  • 通过获取os获得的结果。bbclass 中的 genenv (“ABC”) 为 None,

  • 我写了 /etc/profile,但结果仍然是 None

问题:

  • 那么如何在yocto中添加一个可以在bbclass或bbfile中使用的变量呢?(全局变量)
  • 环境变量的生命周期是什么
python bash 变量 yocto

评论

0赞 user1934428 8/25/2023
我不知道 yocto,但可以告诉你关于“生命周期”的信息:您的语句定义了当前进程的环境变量,并且由于环境继承到子进程,因此它也可以在进程的直接和间接子进程中使用。有一个问题:允许一个进程决定显式地将一个修改过的甚至的环境传递给它的子进程,从而打破继承链 - 所以你最好知道,你的孩子或孙子是否在做这种讨厌的事情。ABC
0赞 littlebox 8/28/2023
@user1934428 谢谢你的解释!

答:

1赞 Livius 8/27/2023 #1

您需要将“全局变量”放入 local.conf、“machine”.conf、“distro”.conf 或 layer.conf 中。这些变量可以在其他 .bb 或 .bbclass 文件中访问。

评论

1赞 littlebox 8/28/2023
好的,它可以工作。谢谢!那么我们可以直接在bbclass中调用os.getenv('ABC')来获取这里的变量值吗?就像os.genenv('HOME')一样
0赞 Livius 8/30/2023
我认为在您的 .bbclass 中,您有一个 BitBake 的 Python 函数。在这种情况下,你可以使用 d.getVar(“ABC”) 来获取 “ABC”。请注意,并非所有 .bbclass 都有 Python 代码,目前对您来说应该是一个特例。docs.yoctoproject.org/bitbake/2.4/bitbake-user-manual/......