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.so
(objdump -x /usr/lib/libC.so.1.0.0
,NEEDED
中有什么)?在这种情况下,他们可能应该依赖于 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)。
我有一个 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.so
(objdump -x /usr/lib/libC.so.1.0.0
,NEEDED
中有什么)?在这种情况下,他们可能应该依赖于 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)。