【问题标题】:Is it possible to pass in command line variables to a bitbake build?是否可以将命令行变量传递给 bitbake 构建?
【发布时间】:2013-06-26 08:40:26
【问题描述】:

我有一个使用 bitbake 进行构建的 OpenEmbedded 环境。我想在 bitbake 暂停并要求输入然后继续构建的地方进行一些“交互式”,但我发现这是不可能的。

因为我不能这样做,所以我正在寻找某种方法来为构建传递额外的标志。有没有办法将标志传递给类似于 gcc 的 -D 选项的 bitbake 构建?

即:

bitbake -Dfoo=bar oe-myimage

因此在oe-myimage 的构建过程中,变量foo 将被设置为bar

【问题讨论】:

    标签: build command-line-arguments compiler-flags openembedded bitbake


    【解决方案1】:
    bitbake -Dfoo=bar oe-myimage
    

    -D 标志不被 bitbake 识别。所以,使用上面的方法是行不通的。相反,您可以使用以下步骤从命令行指定标志 -

    假设你想导出变量 foo 并期望它被 bitbake 识别。

    export foo="foobar"
    

    在获取 oe-init-build-env 之后,您需要导出它并通过 BB_ENV_EXTRAWHITE 变量通知 bitbake。这意味着

    . oe-init-build-env
    export foo="foobar"
    export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"      
    

    这会将变量 'foo' 列入 bitbake 的白名单,从而使其在构建期间对任何配方和子进程可见。

    在此之后,您可以通过以下表达式在 bitbake 中使用变量 foo 调用任何 bitbake 操作 -

    ${foo}
    

    【讨论】:

    • 是否可以添加额外的永久变量?在一些配置文件中呢?还是需要在每次系统重启后导出 BB_ENV_EXTRAWHITE?
    • 是的。您只需要在对您更方便的地方设置变量。例如将上面提到的 2 个导出行添加到 oe-init-build-env。
    【解决方案2】:

    虽然其他答案没有任何问题,但 bitbake 确实接受了 --postread 参数,如文档中的 here 所述。这意味着您可以将任意数量的 bitbake 变量写入某个临时配置文件,并在 bitbake.conf 之后通过在命令行上指定文件名来读取它。例如:

    bitbake --postread=./extra.conf
    

    我个人觉得这比处理环境变量更方便。

    【讨论】:

      【解决方案3】:

      还有一种方便的命令行方式来执行此操作,在 bitbake 手册中使用BB_ORIGENV 进行了描述:

      有时,能够从原始执行环境中获取信息很有用。 Bitbake 将原始环境的副本保存到名为 BB_ORIGENV 的特殊变量中。

      为此,您可以完全按照他们的建议(从 Python 函数)读取变量:

       origenv = d.getVar("BB_ORIGENV", False)
       bar = origenv.getVar("BAR", False)
      

      那么,从命令行传递的方法很简单:

      BAR=somevalue bitbake myimage
      

      【讨论】:

        【解决方案4】:

        你可以这样做:

        export foo="bar"
        export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE foo"
        bitbake oe-myimage
        

        【讨论】:

          【解决方案5】:

          不,我不相信这样的机制存在。但是你可以做类似的事情

          "echo "foo = \"bar\"" >local.conf
          

          不确定这是否能解决您的特定问题。此外,还有一种本地站点范围变量的机制:如果您的主目录中名为 .oe 的目录下有一个“site.conf”文件,bitbake 将读取该文件并将这些变量应用于每个构建的全局环境。也许这会有所帮助?您没有具体说明您要解决的问题,可能有更好的方法。

          【讨论】:

            猜你喜欢
            • 2014-08-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多