如何在Yocto构建中安装pcsc-lite的dev及lib文件?
我希望让PCSC-lite配方中FILES_${PN}-dev和FILES_${PN}-lib部分的文件安装到生成的镜像中。但添加该配方后,仅FILES_${PN}中的文件被安装,其余文件未安装。我正在从旧的Rocko版本镜像迁移,此前在该版本中这些文件能正常存在,请问有什么方法可以让生成的镜像包含这些dev和lib文件?
解决方法
1. 显式添加子包到镜像安装列表
在你的镜像配方(如core-image-xxx.bb)中,将对应子包添加到IMAGE_INSTALL变量:
IMAGE_INSTALL += "pcsc-lite-dev pcsc-lite-lib"
注:需确认子包名称与配方PACKAGES定义完全一致,部分配方可能将lib子包命名为pcsc-lite-libs,需对照pcsc-lite_1.9.0.bb里的配置调整。
2. 排查配方包拆分逻辑的版本差异
Rocko版本的pcsc-lite配方可能未拆分${PN}-dev和${PN}-lib子包,相关文件直接包含在主包${PN}中;而Hardknott版本的配方做了规范拆分,将头文件、开发工具归到${PN}-dev,共享库归到${PN}-lib。这种情况下必须显式安装子包才能获取对应文件。
你可以查看配方中的相关定义确认:
# 配方中典型的包拆分配置示例 PACKAGES += "${PN}-lib ${PN}-dev" FILES_${PN}-lib = "${libdir}/libpcsclite.so.*" FILES_${PN}-dev = "${includedir}/pcsc/ ${libdir}/libpcsclite.so ${libdir}/pkgconfig/"
3. 通过应用依赖自动拉取子包
如果是有应用需要这些dev/lib文件,在应用配方中添加对应依赖:
- 编译时依赖(获取头文件、静态库等):
DEPENDS += "pcsc-lite"
- 运行时依赖(获取共享库):
RDEPENDS_${PN} += "pcsc-lite-lib"
构建镜像时,BitBake会自动拉取这些依赖包到镜像中。
4. 检查PACKAGE_CLASSES配置
确保local.conf中的PACKAGE_CLASSES未限制子包生成,默认配置(如PACKAGE_CLASSES ?= "package_deb")会正常生成所有子包,无需额外调整。
内容的提问来源于stack exchange,提问作者Kristof Nachtergaele
相关产品推荐
相关产品推荐

