【问题标题】:Library versions string in autoconfautoconf 中的库版本字符串
【发布时间】:2023-03-24 17:44:01
【问题描述】:

第一次在 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

【问题讨论】:

  • 你在说什么库?它有 pkg​​config 版本吗?
  • @BrettHale 我正在开发的图书馆 :P 而且,是的。
  • @ptomato 的答案是处理版本控制的正确方法 - 但是如果您确定该库仅供内部使用,您可以 使用-release 标志。你似乎总是在做一些有趣的事情:)

标签: c++ autotools autoconf automake


【解决方案1】:

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

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

这里是this link给出的解释总结:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多