C++ 动态链接到库升级

C++ dynamic linking to libraries upgrade

我有一个关于动态 linking 库的问题。 假设我有一个 libfoo.so 需要 libbar.so。目前它 links 与 libbar.so.100(版本 1.0.0)。 barlibbar.so.200有新版本,foo没有使用bar v2.0.0的任何新功能。它使用的 API 没有变化。 我可以直接升级到 libbar.so.200 并且可以 libfoo 动态地 link 吗?

这是ABI稳定性的问题。

通常,“主要”版本的库会破坏 ABI 稳定性,并且无法正常工作。这是区分主要版本和次要版本颠簸的一种常用方法;次要版本颠簸是向后兼容的,主要版本不是。

这两种方式都没有任何保证。许多小细节可能会影响其工作或不工作,并且需要库开发人员付出一些努力才能确保其工作。