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

问题描述 投票:0回答:3

我设计了一个由主程序

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]

正如你所看到的,我添加了以下内容来处理依赖关系,但似乎缺少了一些东西,用

libdio
更改
dio
也没有解决问题,有任何解决问题的提示或想法吗?

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

#core.bb
DEPENDS += "libdio"
RDEPENDS_${PN} = "libdio"
package shared-libraries embedded-linux yocto
3个回答
3
投票

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

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

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

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


0
投票

有时共享状态缓存会存储旧版本的库。 尝试清理缓存并重新构建:

bitbake <yourapp> -c cleansstate
bitbake <yourapp>

-1
投票

也许缺少空格:

RPROVIDES_${PN} =“libdio”

RDEPENDS_${PN} =“libdio”

© www.soinside.com 2019 - 2024. All rights reserved.