库中的版本字符串在autoconf中

时间:2014-12-20 10:55:10

标签: c++ autotools autoconf automake

在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])

还有Makefile.am

libfoo_la_LDFLAGS = -version-info $(FOO_SO_VERSION)

虽然我收到了这个文件:

libfoo.so.0.0.1

1 个答案:

答案 0 :(得分:4)

.so版本应始终从0:0:0开始。它不应该与项目的软件版本号绑定。

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

以下是this link给出的解释摘要:

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