自动会议中的库版本字符串

Library versions string in autoconf

本文关键字:版本 字符串 会议      更新时间:2023-10-16

autoconf 中首次指定库版本的正确方法是什么?该库处于不稳定状态,我想它会0.1.0,直到它为应该1.0.0的公共 API 做好准备。所以我把以下内容放在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

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

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

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

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