​​​​​​​OpenEmbedded构建系统之构建输出结构

​​​​​​构建输出的内容全部存放在tmp目录下。而tmp目录是由TMPRDIR变量指定的默认目录,存放这所有的构建输出和中间文件。

以下是tmp目录的结构:

tmp

    ├── abi_version

    ├── buildstats

    ├── cache

    ├──deploy

├── images

├── licenses

├── sdk

├── rpm

├── deb

└── ipk

    ├── log

    ├── sstate-control

    ├── stamps

    ├── sysroots-components

├── sysroots-uninative

├── sysroots

├── work

├── all-poky-linux

├── core2-64-poky-linux

├── qemux86_64-poky-linux

└── x86_64-linux

└── work-shared

以下是对上面结构中比较重要目录和其子目录的解释:

buildstats:存储构建统计信息,用于分析和优化构建过程。

cache:包含各种缓存文件,以加速构建过程。

deploy:用于存放构建生成的最终输出,包括镜像、许可证、SDK和软件包等。

  • images:存放构建生成的镜像文件。
  • licenses:存放软件包的许可证文件。
  • sdk:存放软件开发工具包。
  • rpm、deb、ipk:分别存放以RPM、Debian和IPK格式打包的文件。

hosttools:包含构建过程中需要的主机工具。

log:存放构建日志文件。

sstate-control:存放用于共享状态缓存的masnifest文件。

stamps:包含各种时间戳文件,用于跟踪构建步骤。

sysroots-components、sysroots-uninative:包含系统根目录组件和非本地系统根目录。

work:构建过程中生成的工作目录和中间文件。

  • all-poky-linux、core2-64-poky-linux、qemux86_64-poky-linux、x86_64-linux:分别对应不同架构和目标平台的工作目录。

work-shared:存放共享的工作目录文件。

对于构建过程中的构建输出主要存放发在work和deploy目录下,一个存放构建过程的临时文件,一个存放最终的输出文件。两个目录都是在平时实践中会经常访问的目录,下面给出有关两个目录的详细讲解。

work目录结构

work目录是poky/meta/conf/bitbake.conf文件BASE_WORKDIR变量定义的默认目录:

BASE_WORKDIR ?= "${TMPDIR}/work"

work目录的主要目的是为了存放构建菜谱时产生的所有输出文件。构建指定菜谱时的输出文件存放位置是由WORKDIR变量定义的,WORKDIR变量是由一系列变量组合而成的,其定义规则如下:

${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}

实际存放的目录路径和名字取决于以下几个变量:

  • TMPDIR: 顶级构建输出目录。
  • MULTIMACH_TARGET_SYS: 目标系统标识符。
  • PN: 菜谱名称。
  • EXTENDPE: 时代号。如果PE未指定(大多数菜谱情况下如此),则EXTENDPE为空。
  • PV: 菜谱版本。
  • PR: 菜谱修订版。

以在Poky的默认构建环境的build目录中构建foo_1.3.0-r0.bb菜谱为例,构建目录为poky/build,目标系统为qemux86-poky-linux,那么BitBake构建引擎用来构建该菜谱的工作目录如下所示:

poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0

deploy目录结构

deploy目录是用于存放BitBake构建引擎构建生成的最终输出的目录,其中主要包括镜像文件,软件包和应用开发SDK工具。

在构建系统poky/meta/conf/bitbake.conf文件下可以找到相关目录设置变量的初始值如下:

DEPLOY_DIR ?= "${TMPDIR}/deploy"

DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"

DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"

DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"

DEPLOY_DIR_IMAGE ?= "${DEPLOY_DIR}/images/${MACHINE}"

deploy/sdk目录被SDK_DEPLOY变量设置,可以在poky/meta/classes-recipe/populate_sdk_base.bbclass文件下找到。

SDK_DEPLOY = "${DEPLOY_DIR}/sdk"

这里最重要的就是构建输出镜像文件会放在images目录下根据MACHINE变量设置的子目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值