首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Yocto: package需要共享库,但在RDEPENDS_中找不到提供程序?

Yocto: package需要共享库,但在RDEPENDS_中找不到提供程序?
EN

Stack Overflow用户
提问于 2020-11-24 18:50:42
回答 2查看 1.9K关注 0票数 1

我设计了一个由调用共享库dio.so的主程序core组成的应用程序,以下是我编写的两个食谱:

1- core.bb:

代码语言:javascript
运行
复制
#
# This file was derived from the 'Hello World!' example recipe in the
# Yocto Project Development Manual. 
#

SUMMARY = "Core "
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://* "
      
S = "${WORKDIR}/sources"

do_compile() {
    oe_runmake STAGING_PATH=${STAGING_DIR}
}

do_install() {
    oe_runmake install IMAGE_PATH=${D}
}

DEPENDS += "libdio"
RDEPENDS_${PN} = "libdio"

2- dio.bb:

代码语言:javascript
运行
复制
#
# This file was derived from the 'Hello World!' example recipe in the
# Yocto Project Development Manual. 
#

SUMMARY = "DIO"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PN = "dio"

SRC_URI = "file://* "
      
S = "${WORKDIR}/sources"

do_compile() {
    oe_runmake
}

do_install() {
    oe_runmake install IMAGE_PATH=${D} STAGING_PATH=${STAGING_DIR}
}

PROVIDES = "libdio"
RPROVIDES_${PN} = "libdio"

do_compiledo_install和do_package对于这两个配方都是成功的,但问题出在核心的do_package_qa上,它抛出了以下错误:

代码语言:javascript
运行
复制
bitbake -c do_package_qa core
core-1.0-r0 do_package_qa: QA Issue: /usr/bin/core contained in package core requires libdio.so()(64bit), but no providers found in RDEPENDS_core? [file-rdeps]

如你所见,我添加了以下代码来处理依赖,但似乎缺少了一些东西,用dio更改libdio也没有解决问题,有什么提示或想法来解决这个问题吗?

代码语言:javascript
运行
复制
#dio.bb
PROVIDES = "libdio"
RPROVIDES_${PN} = "libdio"

#core.bb
DEPENDS += "libdio"
RDEPENDS_${PN} = "libdio"
EN

回答 2

Stack Overflow用户

发布于 2020-11-24 19:06:25

也许这里缺少一个空格:

RPROVIDES_${PN} =“libdio”

RDEPENDS_${PN} =“libdio”

票数 0
EN

Stack Overflow用户

发布于 2020-11-24 22:39:15

我通过添加以下行解决了这个问题:

代码语言:javascript
运行
复制
#core.bb
DEPENDS += " libdio"
RDEPENDS_${PN} += " libdio.so()(64bit)"

#dio.bb
PROVIDES = " libdio"
RPROVIDES_${PN} += " libdio.so()(64bit)"

所以我只是在错误消息中使用了相同的名称,这些名称是从哪里来的?我不知道,但至少它现在起作用了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64984897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档