首页 > 解决方案 > Yocto:包需要共享库,但在 RDEPENDS_ 中找不到提供程序?

问题描述

core我设计了一个由调用共享库的主程序组成的应用程序dio.so,这些是我编写的 2 个配方:

1-核心.bb:

#
# 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:

#
# 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_compile,do_install和 do_package`` 对两个配方都成功,但问题出在do_package_qa核心上,它会引发以下错误:

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]

如您所见,我添加了以下内容来处理依赖关系,但似乎缺少某些东西,更改也没有解决问题,关于解决问题的任何提示或想法libdiodio

#dio.bb
PROVIDES = "libdio"
RPROVIDES_${PN} = "libdio"

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

标签: packageshared-librariesembedded-linuxyocto

解决方案


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

#core.bb
DEPENDS += " libdio"
RDEPENDS_${PN} += " libdio.so()(64bit)"

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

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


推荐阅读