Yocto理论篇 | OpenEmbedded构建系统之User Configuration

1 工作流

下图表示OpenEmbedded构建系统生成的高级工作流:

通常,构建的工作流由几个功能区域组成:

  • User Configuration:可用于控制生成过程的元数据。
  • Metadata Layers:提供软件、板子和发行版元数据的各种层。
  • Source Files:上游发布、本地项目和SCMs。
  • Build System:在BitBake控制下的进程。这个模块扩展了BitBake如何获取源代码、应用补丁、完成编译、分析生成包的输出、创建和测试包、生成镜像以及生成交叉开发工具。
  • Package Feeds:包含输出包(RPM、DEB或IPK)的目录,这些输出包随后用于构建由构建系统生成的镜像或软件开发工具包(SDK)。如果启用了运行时包管理,还可以使用web服务器或其他方式复制和共享这些提要,以便于在运行时扩展或更新设备上的现有镜像。
  • Images:工作流生成的镜像。
  • Application Development SDK:与镜像一起或与BitBake单独生成的交叉开发工具。

2 User Configuration

用户配置有助于定义构建过程。通过用户配置,可以告诉BitBake要为其构建镜像的目标体系结构、将下载的源代码存储在何处以及其他构建属性。

下图显示了常规工作流图“用户配置”框的展开表示:

BitBake需要一些基本配置文件才能完成构建。这些文件是*.conf文件。最小必要的文件作为示例文件驻留在源目录的build/conf目录中。为了简单起见,这里将源目录称为“Poky Directory”。

Poky内部的meta-poky层包含一个conf目录,其中包含配置文件示例。在源代码oe-init-build-env(构建环境脚本)时,这些示例文件用作创建实际配置文件的基础。

执行环境脚本将创建一个不存在的生成目录。BitBake在构建期间使用Build目录进行所有工作。Build目录有一个conf目录,其中包含本地.conf以及bblayers.conf配置文件。只有在Build目录中不存在时,才会创建这些默认配置文件。

根据脚本的来源,调用不同的子脚本来设置构建目录(Yocto或OpenEmbedded)。具体地说,poky目录中的scripts/oe-setup-builddir设置构建目录,并使用适合于Yocto Project开发环境的配置文件为目录来设定。注意:scripts/oe-setup-builddir脚本使用$TEMPLATECONF变量来确定要定位的配置文件示例。

这个local.conf文件提供了许多定义生成环境的基本变量。若需要查看由脚本创建的默认配置文件local.conf,请参考local.conf.sample在meta-poky层中:

  • Target Machine Selection:由MACHINE变量控制。
  • Download Directory:由DL_DIR变量控制。
  • Shared State Directory:由SSTATE_DIR变量控制。
  • Build Output:由TMPDIR变量控制。
  • Distribution Policy:由DISTRO变量控制。
  • Packaging Format:由PACKAGE_CLASSES变量控制。
  • SDK Target Architecture:由SDKMACHINE变量控制。
  • Extra Image Packages:由EXTRE_IMAGE_FEATURES变量控制。

注意:可以通过修改conf/site.conf和conf/auto.conf文件来修改conf/local.conf文件。

这个bblayers.conf文件告诉BitBake要在构建期间考虑哪些层。默认情况下,此文件中列出的层包括构建系统所需的最小层。但是,必须手动添加已创建的任何自定义图层。

site.conf以及auto.conf文件不是由环境初始化脚本创建的。如果需要site.conf文件,需要自己创建。而auto.conf文件通常由自动生成器创建:

  • size.conf:可以使用conf/site.conf文件去设置多个构建目录。
  • auto.conf:该文件通常由自动生成器创建和写入。文件中的设置通常可以在conf/local.conf与conf/site.conf文件找到相同的地方。

当使用bitbake target命令启动构建时,bitbake会对配置进行排序,以最终定义构建环境。重要的是要了解OpenEmbedded生成系统按特定顺序读取配置文件:site.conf,auto.conf,和local.conf。另外文件是按特定顺序解析的,所以同一变量的变量赋值可能会受到影响。例如,如果auto.conf和local.conf将variable1设置为不同的值,因为生成系统时解析local.conf在auto.conf之后,variable1的值将来自local.conf文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值