如何在Linux中对共享库进行版本控制?

Cra*_*zyC 8 c c++ linux shared-libraries

由于Windows为应用程序和DLL提供了版本的资源文件.但是我们怎样才能在Linux上使用共享库来实现它.我们有一个共享库,喜欢添加版本信息.

thi*_*ton 5

处理这个问题的最佳方法是使用 libtool,它会为您进行版本控制。

本质上,版本信息不是(或者主要不是,我不知道)编码在库本身中,而是编码在它的文件名中。版本号通常以三点格式给出,主要版本号随着向下 ABI 兼容性的每次中断而增加,中间版本号用于向上 ABI 兼容性的中断,次要版本号表示未更改 ABI 的补丁。

正如 qdot 所指出的,lib 目录中的符号链接提供了基本的版本控制。对于当前安装的开发头文件,有一个不带版本号的符号链接(libfoo.so),对于每个已安装的主要版本(libfoo.so.1),有一个带有主版本号的符号链接,以及一个具有完整版本号的真实文件。通常,程序会在运行时链接到使用 libfoo.so.1,以便多个主要版本可以共存。

  • 我同意 libtool 方案似乎是最好的。您的答案似乎在数字顺序上是错误的。正确的顺序是 `current[:revision[:age]]`。所以中间是补丁,最后一项是向后兼容的程度。[libtools 文档](https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html) (2认同)