我有一个我开发的库 A。当我在机器上部署它时,对应的libA.so和libA-XYZso被放入 /usr/lib (XYZ 是版本号)。
现在我开发了一个库 B,它使用 A。当我链接 B 时,我使用标志 -lA。然后“ ldd libB.so ”给了我:
(...)
libA-X.Y.Z.so => /usr/lib/libA-X.Y.Z.so
(...)
我的问题是,当我发布新版本的 A (XYZZ) 时,我还必须发布新版本的 B。否则,安装最新 A 的人将无法安装 B,而 B 将寻找 XYZ 版本这不存在。
我该如何解决这个问题?我如何告诉 B 寻找 libA.so 而不是 libA-XYZso ?或者这样做是错误的?甚至不安全?
更新 1:库 A(我从别人那里继承的)使用自动工具。
更新 2:当我构建库 A 时,我可以看到:"-Wl,-soname -Wl,libA-0.6.1.so"。如果我理解正确,这意味着我们将 soname 强制为libA-0.6.1.so。是对的吗 ?现在我的问题是我不知道如何在使用自动工具的项目中修改这种行为。我用谷歌搜索了一段时间,但找不到任何有用的信息。我应该修改 configure.in 还是 Makefile.am ?