如何选择共享库的soname?

时间:2014-12-30 08:59:20

标签: shared-libraries automake

我正在使用2个共享库。一个(foo)使用CMake,另一个(bar)使用automake。我消除了foo的版本和soversion属性,因为一些关于符号链接的分布问题,结果只有libfoo.so(没有符号链接)。 问题是libbar.so需要libfoo.so.1(我用readelf找到它)。如何使libbar.so使用libfoo.so而不是libfoo.so.1?

1 个答案:

答案 0 :(得分:0)

  

如何libbar.so使用libfoo.so代替libfoo.so.1

DT_NEEDED中的libbar.so标记是在链接libbar.so时从与其链接的所有库的DT_SONAME集合中记录的。< / p>

也就是说,如果libbar.soDT_NEEDED libfoo.so.1,那么必须为真,它与libfoo.so {{}} {{}}相关联1 {} DT_SONAME

如果您libfoo.so.1 没有 libfoo.so(或DT_SONAME DT_SONAME),则将libfoo.so重新链接到 libbar.so版本是必要的,足以摆脱libfoo.so libfoo.so.1标记。