我设计了一个由主程序
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"
我通过添加以下行解决了问题:
#core.bb
DEPENDS += " libdio"
RDEPENDS_${PN} += " libdio.so()(64bit)"
#dio.bb
PROVIDES = " libdio"
RPROVIDES_${PN} += " libdio.so()(64bit)"
所以我只是在错误消息中使用了相同的名称,这些名称是从哪里来的?我不知道,但至少现在可以了
有时共享状态缓存会存储旧版本的库。 尝试清理缓存并重新构建:
bitbake <yourapp> -c cleansstate
bitbake <yourapp>
也许缺少空格:
RPROVIDES_${PN} =“libdio”
RDEPENDS_${PN} =“libdio”