由配方创建的包打包两个预先构建的库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找到了一种方法,但它需要在许多配方中进行更改,并且似乎不是一个好的解决方案。 如何让其他食谱看到这条路径并找到图书馆?
答案 0 :(得分:0)
首先,您需要了解DEPENDS and RDEPENDS
DEPENDS:配方在yocto中编译时搜索libs RDEPENDS:配方二进制搜索在板上运行时的库
如果在配方中保留DEPENDS lib-recipe
,它将采用依赖配方路径,iit将自动编译
如果你在配方中保留RDEPENDS lib-recipe,那么当它上面的二进制文件执行时,它将检查rdepends libs。
请参阅以下链接,这些链接可以帮助您ASSUME_SHLIBS和EXCLUDE_FROM_SHLIBS