当前位置: 首页 > news >正文

重庆网站设计开发培训学校网站验收标准

重庆网站设计开发培训学校,网站验收标准,精美 企业网站模板,比亚迪唐100使用了哪些网络营销方式任务是BitBake的执行单元,变量可能会对任务产生影响。本篇章介绍常用的变量与任务。 基本变量 系统配置变量 变量名说明典型配置位置示例值MACHINE指定目标硬件平台配置local.conf“qemux86-64”DISTRO指定发行版配置文件local.conf“poky”TARGET_VENDOR目标供应…

任务是BitBake的执行单元,变量可能会对任务产生影响。本篇章介绍常用的变量与任务。


基本变量

系统配置变量

变量名说明典型配置位置示例值
MACHINE指定目标硬件平台配置local.conf“qemux86-64”
DISTRO指定发行版配置文件local.conf“poky”
TARGET_VENDOR目标供应商名称层配置“-openeuler”
TARGET_OS目标操作系统层配置“linux”
PACKAGE_CLASSES包管理器类型local.conf“package_rpm”

包标识变量

变量名说明自动生成规则示例
PN软件包名称从配方文件名提取hello_1.0.bb → “hello”
PV软件包版本从配方文件名提取hello_1.0.bb → “1.0”
PR配方修订版本默认为"r0"“r0”, “r1”
BPN基础包名去除前后缀(-native/-cross等)gcc-cross → “gcc”
BP完整基础包名BPN−{PV}“hello-1.0”

源码与许可管理

变量名说明必需性示例
SRC_URI源码获取路径必需“http://example.com/src.tar.gz”
LICENSE软件许可证类型必需“MIT”, “GPL-2.0”
LIC_FILES_CHKSUM许可证文件校验和推荐“”

构建路径变量

变量名说明默认指向
WORKDIR配方工作目录TMPDIR/work/{TMPDIR}/work/TMPDIR/work/{MULTIMACH_TARGET_SYS}/PN/{PN}/PN/{EXTENDPE}PV−{PV}-PV{PR}
S源代码目录WORKDIR/{BPN}-${PV}
B构建输出目录同S一样 或${WORKDIR}/build
D安装目标目录${WORKDIR}/image
PKGD打包文件目录${WORKDIR}/package
PKGDEST分包后文件目录${WORKDIR}/packages-split

系统标识变量

变量名说明计算公式
MULTIMACH_TARGET_SYS目标系统唯一标识PACKAGEARCH{PACKAGE_ARCH}PACKAGEARCH{TARGET_VENDOR}-${TARGET_OS};
PACKAGE_ARCH包体系结构根据MACHINE自动设置

依赖管理变量

变量名说明类型
DEPENDS构建时依赖配方间依赖
RDEPENDS运行时依赖包间依赖

Sysroot相关变量

变量名说明默认指向
RECIPE_SYSROOT目标系统sysroot${WORKDIR}/recipe-sysroot
RECIPE_SYSROOT_NATIVE本地系统sysroot${WORKDIR}/recipe-sysroot-native
SYSROOT_DESTDIRSysroot目标目录${WORKDIR}/sysroot-destdir
STAGING_DIR_HOST主机sysroot路径${RECIPE_SYSROOT}
STAGING_DIR_NATIVE本地sysroot路径${RECIPE_SYSROOT_NATIVE}
STAGING_KERNEL_DIR内核头文件目录内核源码目录
STAGING_KERNEL_BUILDDIR内核构建工件目录内核构建目录

镜像构建变量

变量名说明作用范围
IMAGE_FEATURES镜像功能特性列表全局/镜像级
EXTRA_IMAGE_FEATURES额外镜像功能镜像级
IMAGE_INSTALL镜像中安装的包列表镜像级
PACKAGE_EXCLUDE排除不安装的包镜像级
PACKAGE_INSTALL要安装的包列表(只读)系统内部

部署目录变量

变量名说明默认指向
DEPLOY_DIR部署文件根目录${TMPDIR}/deploy
DEPLOY_DIR_IMAGE镜像部署目录DEPLOYDIR/images/{MACHINE}
DEPLOYDIR临时部署工作区WORKDIR/deploy−{PN}

编译工具链变量

变量名说明用途
CCC编译器命令编译C代码
CFLAGSC编译器标志优化/调试选项
CXXFLAGSC++编译器标志C++编译选项
CPPFLAGSC预处理器标志预处理选项
LDFLAGS链接器标志链接选项

高级控制变量

变量名说明用途
OVERRIDES变量覆盖机制条件变量设置
COMPATIBLE_MACHINE配方兼容的机器类型配方过滤
SYSROOT_DIRSSysroot存储目录系统配置

特殊变量说明

只读变量(不应修改)
  • IMAGE_ROOTFS: 根文件系统位置(do_rootfs任务期间)
  • PACKAGE_INSTALL: 要安装到镜像中的程序包列表
目录结构变量
# 典型工作目录结构
WORKDIR/
├── ${BPN}-${PV}/    # S - 源代码目录
├── build/           # B - 构建目录(可选)
├── image/           # D - 安装目录
├── package/         # PKGD - 打包目录
└── packages-split/  # PKGDEST - 分包目录
多机器目标系统

MULTIMACH_TARGET_SYS是构建系统中的关键标识符,用于区分不同目标系统的工件,确保交叉编译的正确性。

注意: 此参考手册基于Yocto Project 4.0+版本,部分变量行为可能在不同版本间有所差异。

基本任务

配方(.bb文件)使用任务来完成软件的配置、编译和打包等。本节提供了在OpenEmbedded(Yocto)构建系统中定义的任务的参考。

Yocto支持的主要任务如下:

任务执行顺序查看

每个包的实际任务执行顺序记录在工作目录下的文件中:

$WORKDIR/temp/log.task_order

核心任务解析

do_build - 默认任务

  • 性质:配方的主任务,依赖于所有其他正常构建任务
  • 特殊设置:在 meta/classes/base.bbclass中配置了 do_build[noexec] = “1”
  • 实际作用:作为虚拟任务,用于协调和串联各个模块的任务流程
  • 构建表现:temp目录下不会生成对应的执行脚本和日志文件

do_fetch / do_unpack - 源码处理阶段

执行流程

  1. 配置源文件:配方必须首先通过 SRC_URI变量定义源文件获取方式
  2. do_fetch任务:根据配置获取源文件
  3. do_unpack任务:将获取的源文件解压到工作目录 ${WORKDIR}

目录结构

  • 工作目录采用统一的标准结构
  • 支持两种主要层次结构:
    • 基于包架构(PACKAGE_ARCH)
    • 基于目标机器(MACHINE)
  • 底层结构一致,区别仅在于构建目标类型:
    • 通用架构构建
    • 构建主机环境
    • SDK开发工具包
    • 特定机器目标

源文件获取机制

  • SRC_URI变量:定义源码位置和获取方式
    • file://前缀:本地文件
    • http://、git://等前缀:从上游获取源文件
  • 路径搜索规则
    • 使用 FILESPATH变量扫描本地文件路径
    • 如需添加新路径,应通过 FILESEXTRAPATHS变量扩展,而非直接修改 FILESPATH

重要提示

成功解压源文件后,需确保 ${S}目录与源码结构匹配:

  • 如果从标准tarball获取源码,且其内部结构符合 BPN−{BPN}-BPN{PV}命名约定,则无需设置 S变量
  • 如果使用非标准tarball或从Git/Subversion等SCM获取源码,则需要在配方中明确定义 S变量

详细配置请参考:meta/classes/base.bbclass

do_patch - 补丁应用任务

功能描述

do_patch任务在获取和解压源码后,将补丁文件应用到源码目录(${S})中。补丁应用顺序由 SRC_URI变量中文件的排列顺序决定。

补丁识别规则

  • 文件扩展名:所有以 .patch或 .diff结尾的文件(包括压缩版本如 .diff.gz)
  • 显式标记:任何添加了 ;apply=yes参数的文件也会被视为补丁

配置示例

SRC_URI += " \file://file1.patch \file://file;apply=yes \file://file2.patch;apply=no \"

注意:补丁的应用位置可以进行自定义设置。

详细实现参考:meta/classes/patch.bbclass

do_prepare_recipe_sysroot - Sysroot准备任务

功能描述

配方构建过程中需要访问其他配方提供的文件(如依赖库和头文件)。该任务通过填充sysroot来实现这种访问机制。

Sysroot类型

每个配方在工作目录中包含两个sysroot:

  • 目标文件sysroot (recipe-sysroot):用于目标系统的文件
  • 本地文件sysroot (recipe-sysroot-native):用于构建主机的本地工具

依赖处理机制

根据 DEPENDS变量指定的依赖关系,将依赖包执行 do_populate_sysroot任务后产生的文件安装到当前配方的特定sysroot目录中:

  • ${RECIPE_SYSROOT}- 目标系统sysroot路径
  • ${RECIPE_SYSROOT_NATIVE}- 本地工具sysroot路径

详细实现参考:meta/classes/staging.bbclass

do_configure - 源码配置任务

执行环境

该任务在当前工作目录设置为 ${B}(构建目录)的情况下运行。

默认行为

  • 存在Makefile时:如果发现Makefile(Makefile、makefile或GNUmakefile)且 CLEANBROKEN未设置为"1",则默认执行 oe_runmake clean
  • 无Makefile时:如果未找到相关文件或 CLEANBROKEN设置为"1",则该任务不执行任何操作

配置选项来源

  1. 配方自定义:在配方文件中直接定义的配置选项
  2. 继承类:通过继承的类(如autotools、cmake等)提供的配置选项
  3. 自适应配置:软件根据目标平台自动进行的自我配置

各类构建系统的特殊配置变量

构建系统配置变量说明
AutotoolsEXTRA_OECONF额外配置选项
PACKAGECONFIG_CONFARGS功能配置参数
CMakeEXTRA_OECMAKE额外CMake选项
MesonEXTRA_OEMESON额外Meson选项

详细实现参考:base.bbclass、autotools.bbclass、cmake.bbclass、meson.bbclass等

这种任务解析模式同样适用于后续的 do_compile和 do_install`任务。

do_compile - 源代码编译

  • 执行环境:在当前工作目录 ${B}(构建目录)下运行
  • 默认行为
    • 如果找到构建文件(Makefile、makefile或GNUmakefile),则执行 oe_runmake函数
    • 如果未找到相关文件,该任务不执行任何操作

do_install - 文件安装

  • 执行环境:在当前工作目录 ${B}下运行,安装文件到保留区 ${D}
  • 权限管理:该任务及相关任务(do_packagedo_package_write_*do_rootfs)都在fakeroot环境下运行

文件安装最佳实践

为避免主机用户污染问题,推荐使用以下安全方法:

  1. install程序:首选方法,自动处理权限设置
  2. cp命令:使用 --no-preserve=ownership选项
  3. tar命令:使用 --no-same-owner选项

参考示例:meta/classes/bin_package.bbclass

系统集成任务

do_populate_sysroot - Sysroot填充

  • 功能:将 ${D}目录中的文件子集复制到 Sysroot
  • 处理流程
    1. 复制文件到 SYSROOT_DESTDIR目录
    2. 默认执行 strip 操作
    3. 拷贝到 ${COMPONENTS_DIR}/${PACKAGE_ARCH}/${PN}
  • 重要规则:配方不应直接写入 SYSROOT_DESTDIR,而应通过 do_install安装到 ${D}

do_package - 包分析拆分

  • 依据:根据 PACKAGESFILES_xxx变量分析 ${D}目录中的文件
  • 分配规则
    • 使用每个包对应的 FILES变量分配文件
    • 文件匹配多个包时,分配给最先(最左)的包
    • 空包不会生成(除非设置 ALLOW_EMPTY
  • 元数据管理:与 do_packagedata共同保存包元数据

do_packagedata - 包元数据保存

  • 功能:将包元数据保存在 PKGDATA_DIR目录中,供全局使用

包生成任务

do_package_write_* - 包格式生成

任务名称输出格式输出目录
do_package_write_rpmRPM包 (.rpm)${DEPLOY_DIR_RPM}
do_package_write_debDebian包 (.deb)${DEPLOY_DIR_DEB}
do_package_write_ipkIPK包 (.ipk)${DEPLOY_DIR_IPK}
do_package_write_tartar.gz包${DEPLOY_DIR_TAR}

do_package_qa - 质量检查

  • 功能:对打包文件运行QA检查,检测和报告常见问题
  • 建议:应解决所有报告的QA问题,而非忽略或禁用检查
  • 参考poky/documentation/ref-manual/qa-checks.rst

部署与镜像任务

do_deploy - 文件部署

  • 输出位置:将文件写入 ${DEPLOY_DIR_IMAGE}
  • 最佳实践
    • 继承 deploy
    • 输出写入 ${DEPLOYDIR}(非 ${DEPLOY_DIR}
    • 避免直接写入 ${DEPLOY_DIR_IMAGE}

do_rootfs - 根文件系统创建

  • 功能:为镜像创建根文件系统结构
  • 参考meta/classes/image.bbclass

do_image / do_image_complete - 镜像生成

  • 处理流程
    • do_image:启动生成过程,执行预处理命令
    • do_image_complete:完成生成过程,执行后处理命令
  • 参考meta/classes/image.bbclass

配置作用域详解

全局配置与局部配置

配置类型定义位置生效范围解析影响
全局配置bblayers.conf, layer.conf, bitbake.conf, .bbclass所有配方修改后需重新解析(耗时)
局部配置单个 .bb文件仅当前配方快速生效

变量覆盖限制

  • 局部可修改:在bb文件中可对全局配置进行适配(删减、附加、覆盖)
  • 解析时机限制includerequireinherit指令立即解析,必须在指令使用前确定变量值
示例说明
# bitbake.conf 中
include conf/local.conf
include ${MACHINE}.conf# local.conf 中
MACHINE = "qemux86-64"# test_directive.bb 中尝试覆盖
MACHINE = "test_machine"  # 无效!解析时仍使用 qemux86-64.conf

关键理解:全局配置在解析初期就已确定,局部覆盖无法影响已经解析的指令


接下来将带您逐步实现:

👉 立即点击关注,解锁嵌入式开发新技能!
👍 一键三连获取完整代码模板与构建加速技巧!
✨ 感谢您的支持,我们即刻启程!

http://www.dtcms.com/a/493886.html

相关文章:

  • 中国电力建设股份有限公司官方网站企业网站的建立主要用于企业内部发布信息
  • 糗事百科网站源码盐城快速建设网站找哪家
  • 做网站开发还会有前途吗好的外国设计网站推荐
  • 广东东莞免费网站制作公司义乌网站建设设
  • 短网站生成金坛网站优化
  • 做网站的公司主要是干啥wordpress导入导出
  • 中文域名指向同一个网站毕节地seo
  • asp.net做网站网站推广的方法有
  • 华企网站建设找活做的网站
  • 广东省住房和城乡建设厅网站进不去网站怎么做小程序
  • 生活家装饰官方网站京津冀协同发展的路径主要涉及
  • 登陆建设银行wap网站制作系部网站首页
  • wordpress获取站点标题虚拟主机便宜
  • 贷款网站源码下载wordpress 主机屋
  • 海西高端网站建设公司企业管理公司全是骗子
  • 自己做的网站怎么上传到网络公司网站做一年多少钱
  • 营销类网站设计 要点公司网站备案
  • 济南企业建站品牌摄影网站都有什么
  • 网站开发建设专业的公司三亚北京网站建设
  • 电影视频网站源码html自学
  • 苏州市城乡建设局网站首页flash做网站轮播图
  • 做城市网站的标语对网页设计的认识和理解
  • 做电商网站的步骤广州公司注册贴吧
  • 做电影网站收入瑞安哪里有做百度的网站
  • 做网站最小的字体是多少服务器网站怎么用
  • .net招聘网站怎么做wordpress无法建立目录
  • 网站地址和网页地址区别软件下载网站哪个好用
  • 电子商城网站开发价格网站显示数据
  • 洛阳便宜网站建设价格网站在阿里云备案
  • 做电影网站赚钱高大上的企业网站