无法找到共享库提供商

时间:2017-12-29 10:52:27

标签: yocto openembedded

由配方创建的包打包两个预先构建的库libABC.so.1和libABC.so,指向符号链接到libABC.so.1。这些的soname是libABC.so.1。 Yocto提供了一种机制来注册shlib提供程序并使其在运行时可用。它将库的soname注册为shlib提供程序,在本例中为libABC.so.1。但是如果另一个配方需要libABC.so,它会在构建日志的log.do_package中抛出一个NOTE,说它无法找到libABC.so。 在配方中使用RDEPENDS将无法工作,因为它将查找针对该包注册的库,这将是soname。 我使用ASSUME_SHLIBS找到了一种方法,但它需要在许多配方中进行更改,并且似乎不是一个好的解决方案。 如何让其他食谱看到这条路径并找到图书馆?

1 个答案:

答案 0 :(得分:0)

首先,您需要了解DEPENDS and RDEPENDS

  

DEPENDS:配方在yocto中编译时搜索libs    RDEPENDS:配方二进制搜索在板上运行时的库

如果在配方中保留DEPENDS lib-recipe,它将采用依赖配方路径,iit将自动编译

如果你在配方中保留RDEPENDS lib-recipe,那么当它上面的二进制文件执行时,它将检查rdepends libs。

请参阅以下链接,这些链接可以帮助您ASSUME_SHLIBSEXCLUDE_FROM_SHLIBS