关于RPROVIDES、RPROVIDES:${PN}及RPROVIDES:${PN}-xxx的含义与关系问询
RPROVIDES 相关概念解析
基础的 RPROVIDES 作用
在OpenEmbedded/Yocto构建体系中,RPROVIDES是核心变量之一,用于为软件包(或其子包)定义别名。当其他软件包依赖这个别名时,系统会认为提供该别名的包已满足依赖要求。
RPROVIDES、RPROVIDES:${PN} 与 RPROVIDES:${PN}-xxx 的关系
RPROVIDES:直接使用不带后缀的RPROVIDES时,默认是给当前包的主包(即与包名同名的核心包)添加别名。不过更规范的写法是用RPROVIDES:${PN}明确指定主包。RPROVIDES:${PN}:${PN}是构建系统的内置变量,代表当前软件包的名称(Package Name)。这种写法明确为当前包的主包添加别名,作用和直接写RPROVIDES一致,但语义更清晰。比如当前包名为glibc,RPROVIDES:${PN} = "libc"就表示glibc主包可以作为libc的替代包。RPROVIDES:${PN}-xxx:这里的xxx是子包后缀(常见的有-dev、-doc、-static等),OpenEmbedded/Yocto会自动根据包的内容拆分出这些子包(比如-dev存放开发头文件和链接库,-doc存放文档)。这种写法为对应后缀的子包添加别名,精准控制子包的别名映射。
代码 RPROVIDES:${PN}-doc = "eglibc-doc" 的含义
假设当前包的名称(${PN})是glibc,那么${PN}-doc对应的就是glibc-doc这个文档子包。这行代码的作用是:让当前包的文档子包(glibc-doc)提供eglibc-doc这个别名。
简单来说,任何依赖eglibc-doc的软件包,在安装了当前包的-doc子包后,依赖关系会被系统判定为已满足,无需额外安装真正的eglibc-doc包。
内容的提问来源于stack exchange,提问作者Jaehyun Lee
相关产品推荐
相关产品推荐

