我正在使用2个共享库。一个(foo)使用CMake,另一个(bar)使用automake。我消除了foo的版本和soversion属性,因为一些关于符号链接的分布问题,结果只有libfoo.so(没有符号链接)。 问题是libbar.so需要libfoo.so.1(我用readelf找到它)。如何使libbar.so使用libfoo.so而不是libfoo.so.1?
答案 0 :(得分:0)
如何
libbar.so
使用libfoo.so
代替libfoo.so.1
DT_NEEDED
中的libbar.so
标记是在链接libbar.so
时从与其链接的所有库的DT_SONAME
集合中记录的。< / p>
也就是说,如果libbar.so
有DT_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
标记。