Mik*_*ike 14 build compiler-flags command-line-arguments openembedded bitbake
我有一个使用bitbake的OpenEmbedded环境来做一些构建.我希望得到一些"交互式"的东西,bitbake会暂停并询问输入然后继续构建,但我发现这是不可能的.
因为我不能这样做,所以我正在寻找一些方法来为构建传递额外的标志.有没有办法将标志传递给bitbake构建类似gcc的-D选项?
即:
bitbake -Dfoo=bar oe-myimage
Run Code Online (Sandbox Code Playgroud)
因此在oe-myimage变量的构建过程foo中将设置为bar.
小智 17
bitbake -Dfoo=bar oe-myimage
Run Code Online (Sandbox Code Playgroud)
bitbake无法识别-D标志.因此,使用上述方法将无法正常工作.相反,您可以使用以下步骤从命令行指定标志 -
假设您要导出变量foo并期望它被bitbake识别.
export foo="foobar"
Run Code Online (Sandbox Code Playgroud)
在采购oe-init-build-env之后,您需要将其导出并通过BB_ENV_EXTRAWHITE变量通知bitbake.这意味着
. oe-init-build-env
export foo="foobar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
Run Code Online (Sandbox Code Playgroud)
这会将用于bitbake的变量'foo'列入白名单,从而使其在构建期间对任何配方和子进程可见.
在此之后,您可以通过以下表达式使用变量foo在bitbake中调用任何bitbake操作:
${foo}
Run Code Online (Sandbox Code Playgroud)
Tab*_*lly 10
虽然其他答案没有任何问题,但 bitbake 确实接受了此处--postread记录的论点。这意味着您可以将任意数量的 bitbake 变量写入一些临时配置文件,并通过在命令行上指定文件名在 bitbake.conf 之后读取它。例如:
bitbake --postread=./extra.conf
Run Code Online (Sandbox Code Playgroud)
我个人觉得这比处理环境变量更方便。
小智 6
你可以做:
export foo="bar"
export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
bitbake oe-myimage
Run Code Online (Sandbox Code Playgroud)
还有一种方便的命令行方式可以做到这一点,在 bitbake 手册中使用BB_ORIGENV进行了描述:
有时,能够从原始执行环境中获取信息很有用。Bitbake 将原始环境的副本保存到名为 BB_ORIGENV 的特殊变量中。
为此,您可以完全按照他们的建议(从 Python 函数)读取变量:
origenv = d.getVar("BB_ORIGENV", False)
bar = origenv.getVar("BAR", False)
Run Code Online (Sandbox Code Playgroud)
然后,从命令行传递它的方法很简单:
BAR=somevalue bitbake myimage
Run Code Online (Sandbox Code Playgroud)
不,我不相信这样的机制存在。但你可以做类似的事情
"echo "foo = \"bar\"" >local.conf
Run Code Online (Sandbox Code Playgroud)
不确定这是否能解决您的特定问题。此外,还有一种用于本地站点范围变量的机制:如果您的主目录中名为 .oe 的目录下有一个“site.conf”文件,bitbake 将读取该文件并将这些变量应用于每个构建的全局环境。也许这会有帮助?你没有具体说明你要解决什么问题,可能有更好的方法。
| 归档时间: |
|
| 查看次数: |
11645 次 |
| 最近记录: |