我将依赖包添加到一个现有的.bb文件中,例如将DPENDS="AAA"行添加到.bb文件中,当我编译.bb文件时,它对于XXX rdepends on AAA-dev [dev-deps]失败,我搜索google,所有答案几乎都是将行INSANE_SKIP_${PN} += "dev-deps"或RDEPENDS_${PN}_remove = "AAA-dev"添加到.bb文件中。
但我的问题是为什么?为什么一个包依赖AAA包,它也应该RDPENDS AAA-dev,还有其他的解决方法来解决这个问题吗?
bb源文件是:
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->我在onenet pkg上添加了一个DEPENDS
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link onenet"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->onenet.bb是:
inherit pkgconfig cmake
DESCRIPTION = "onenet sdk"
LICENSE = "PD"
PR = "r0"
LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=bae84cdd023be37582157d865da54cc6"
SRCREV = "065d98dd8de91544315d6167ce73626ce739666d"
SRC_URI = "git://github.com/cm-heclouds/MQTT.git;protocol=https"
S = "${WORKDIR}/git/mqtt_sdk"
do_install() {
install -d ${D}/usr/lib
install -d ${D}/usr/include/onenet
install -m 0644 ${B}/bin/libmqtt.so -D ${D}/usr/lib/
for inc in $(find ${S} -name *.h ! -name 'cJSON.h'); do
install -m 0644 ${inc} -D ${D}/usr/include/onenet
done
}s发布于 2019-10-18 06:25:40
健全检查文档解释了这一点:
dev-deps:检查除-dev或-staticdev包之外的所有包都不依赖于-dev包,这将是一个打包错误。
它告诉您,在您当前的食谱"XXX“运行时-依赖于"AAA-dev”,这通常是一个错误。在决定正确的解决方案之前,您需要了解如何/为什么添加此依赖项。
根据添加的菜谱:问题似乎在于,onenet构建会生成一个不版本的".so“文件。这通常是一个错误(实际的库文件应该是"libmqtt.so.1.1“,而不版本化的文件应该只是一个指向版本的符号链接)。我很惊讶,当您构建onenet时,您没有在这个问题上得到致命的错误。您是否消除了这方面的QA错误?
由于您已经设法以某种方式构建了onenet,所以现在可能有一个onenet-dev包错误地包含了实际的库:构建系统在atfwd-daemon构建期间注意到了这一点,向onenet-dev添加了一个运行时依赖项(因为这是库所在的位置),然后会触发QA错误,因为普通包不应该依赖于-dev包。
可能的解决办法:
"${libdir}/libmqtt.so" FILES_${PN}-dev =“${包容性}/”FILES_${PN} +=
一个额外的建议是:使用目录变量而不是像/usr/include和/usr/lib这样的路径(就像我前面所做的)是一个很好的“最佳实践”。
https://stackoverflow.com/questions/58443713
复制相似问题