首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bitbake依赖AAA数据包,它将取决于AAA-dev。

Bitbake依赖AAA数据包,它将取决于AAA-dev。
EN

Stack Overflow用户
提问于 2019-10-18 03:52:39
回答 1查看 1K关注 0票数 0

我将依赖包添加到一个现有的.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源文件是:

代码语言:javascript
复制
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

代码语言:javascript
复制
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是:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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包。

可能的解决办法:

  • 要么修复onenet构建系统从而生成一个版本化的库,要么
  • 强制将.so文件打包到实际的onenet包中,而不是onenet-dev,如下所示:

"${libdir}/libmqtt.so" FILES_${PN}-dev =“${包容性}/”FILES_${PN} +=

一个额外的建议是:使用目录变量而不是像/usr/include和/usr/lib这样的路径(就像我前面所做的)是一个很好的“最佳实践”。

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

https://stackoverflow.com/questions/58443713

复制
相关文章

相似问题

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