Bitbake中deploy/rpm下四类软件包名称的决定因素是什么
Bitbake生成RPM包名称的规则解析
Bitbake生成的四类RPM包(普通包、调试包、开发包、源码包)名称,主要由配方内的核心变量、包类型规则,以及构建配置(比如cmake版本设置)共同决定,具体细节如下:
一、包名的核心组成结构
所有RPM包的名称都基于统一的变量模板:
${PN}-${PV}-${PR}.${ARCH}.rpm
其中关键变量的含义:
PN:包的基础名称,默认是配方文件的文件名(去掉.bb后缀),也可在配方中通过PN = "xxx"手动指定PV:包的版本号,这就是你观察到的cmake设置会影响的部分——当配方inherit cmake后,Bitbake会自动读取CMakeLists.txt里的VERSION配置(比如PROJECT(MyApp VERSION 1.2.3)),将其同步到PV变量;若配方手动设置了PV,cmake的版本配置会覆盖该值(除非显式禁止)PR:包的修订号,默认值为r0,构建变更时会自动递增,也可手动修改ARCH:目标架构,由构建环境的TARGET_ARCH变量决定(如x86_64、armhf等)
二、四类包的具体名称规则
普通运行包
名称直接遵循核心模板:${PN}-${PV}-${PR}.${ARCH}.rpm,是提供程序运行时核心文件的主包,默认是配方生成的基础包(除非通过PACKAGES变量自定义包集合)。
调试包
名称格式为:${PN}-dbg-${PV}-${PR}.${ARCH}.rpm,Bitbake会自动生成该包的前提是:
- 未设置
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"(默认允许拆分调试包) - 构建时启用了调试符号(如设置
DEBUG_BUILD = "1")
调试包包含编译生成的.debug符号文件,用于程序调试。
开发包
名称格式为:${PN}-dev-${PV}-${PR}.${ARCH}.rpm,生成条件包括:
- 配方继承了
devshell、pkgconfig等开发相关类 - 配方中通过
PACKAGES显式声明了${PN}-dev
该包包含头文件、.pc配置文件、静态库等开发所需资源。
源码包(SRPM)
名称格式为:${PN}-${PV}-${PR}.src.rpm,由do_package_write_rpm任务生成,包含配方对应的源码、补丁、构建配置等完整源码构建资源。
三、自定义包名的方式
若需修改默认包名,可通过PACKAGES和PKG_*_NAME变量实现,示例:
# 添加自定义包 PACKAGES += "${PN}-utils" # 指定自定义包的名称 PKG_${PN}-utils_NAME = "my-app-utils"
最终生成的自定义包名称会变为:my-app-utils-${PV}-${PR}.${ARCH}.rpm
内容的提问来源于stack exchange,提问作者Patrick M
相关产品推荐
相关产品推荐

