autoconf 中的库版本字符串

sor*_*h-r 1 c++ automake autoconf autotools

在 autoconf 中首次指定库版本的正确方法是什么?该库处于不稳定状态,我想在它0.1.0为公共 API 准备好之前它应该是1.0.0. 所以我把以下内容configure.ac

AC_SUBST([FOO_SO_VERSION], [0:1:0])
AC_SUBST([FOO_API_VERSION], [0.1.0])
Run Code Online (Sandbox Code Playgroud)

还有Makefile.am

libfoo_la_LDFLAGS = -version-info $(FOO_SO_VERSION)
Run Code Online (Sandbox Code Playgroud)

虽然我得到了这个文件:

libfoo.so.0.0.1
Run Code Online (Sandbox Code Playgroud)

pto*_*ato 5

.so 版本应始终从 0:0:0 开始。它不应与您项目的软件版本号相关联。

Libtool 版本号被称为current:revision:age并且不一定映射到任何特定平台上的 .so 文件的后缀。

以下是此链接中给出的解释的摘要:

  • 每次发布时增加修订版本。
  • 每次对 API/ABI 进行更改时,增加当前值并将修订版设置为 0。
  • 对 API/ABI 进行向后兼容的更改时增加年龄
  • 当您对 API/ABI 进行向后不兼容的更改时,将age设置为 0。