Yocto 配方安装共享库依赖问题

Yocto recipe to install shared libraries dependency issues

我有一个 Yocto 配方,可以编译动态链接的共享库,应该添加到 rootfs。编译并将它们添加到 rootfs 工作正常,但会导致 QA 打包警告。

S = "${WORKDIR}/git"

do_compile () {
    make
}

do_install () {
    install -m 0755 -d ${D}${libdir}
    oe_libinstall -so libA ${D}${libdir}
    oe_libinstall -so libB ${D}${libdir}
    oe_libinstall -so libC ${D}${libdir}
}

INSANE_SKIP_${PN} = "ldflags"
# RDEPENDS_${PN} = "libB${SOLIBS}"
# RPROVIDES_${PN} = "libB${SOLIBS}"

# FILES_${PN} = "${libdir}/lib*${SOLIBS}"
# INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
# INHIBIT_PACKAGE_STRIP = "1"

警告如下:

WARNING: package do_package_qa: QA Issue: /usr/lib/libC.so.1.0.0 contained in package package requires libB.so, but no providers found in RDEPENDS_package? [file-rdeps]

评论的 RDEPENDS_${PN} = "libB${SOLIBS}" 到目前为止我尝试过的任何方式都没有做任何事情。

我该如何解决这个问题?我不想添加INSANE_SKIP_${PN} += "file-rdeps",我想解决依赖问题

只是猜测,但你的食谱不是安装 lib{A,B,C}.so.1.0.0 而他们实际上需要 libX.soobjdump -x /usr/lib/libC.so.1.0.0NEEDED 中有什么)?在这种情况下,他们可能应该依赖于 libX.so.1.0.0,所以修正你的 Makefile/CMakeLists。 我以前从未见过或使用过 oe_libinstall,你能用 install relative/path/to/libA.so.1.0.0 ${D}${libdir} 代替吗?也许那是 oe_libinstall 在玩这个奇怪的把戏?

此外,您可能不需要手动制作的 do_compile,基本 do_compile 已经为您完成了(如果有可用的 Makefile,则调用 make)。