【问题标题】:libtool library version numberinglibtool 库版本编号
【发布时间】:2017-12-08 11:34:39
【问题描述】:

目前我正在使用选项链接一个成功构建的库

libtool --mode=link g++ -version-info 1:0

这会产生一个名为

的库
libxxx.so.1.0.0

到目前为止还不错。我的问题:如何影响版本方案中的最后一位数字,意思是如何在库名称的末尾有一个不同于 0 的值?

谢谢!

【问题讨论】:

  • 选项-version-info 有一种复杂的方法来编码主要和次要版本号。这意味着它很难学习,也很容易忘记。幸运的是还有一个-version-number 选项,它以major:minor:patchlevel 形式接受参数。

标签: linux shared-libraries gnu libtool


【解决方案1】:

请参考Libtool manual中的“更新库版本信息”,它解释了这些数字的含义以及为什么-version-info 1:0:3无效:

如果要使用 libtool 的版本控制系统,则必须在链接模式下使用 -version-info 标志将版本信息指定给 libtool(请参阅链接模式)。

该标志接受 current[:revision[:age]] 形式的参数。因此,传递 -version-info 3:12:1 会将 current 设置为 3,将 revision 设置为 12,并将 age 设置为 1。

如果revision或age被省略,则默认为0。另外注意age必须小于或等于当前接口号。

这里有一组规则可以帮助你更新你的库版本信息:

  1. 从每个 libtool 库的 0:0:0 版本信息开始。
  2. 仅在您的软件公开发布之前更新版本信息。不需要更频繁的更新,只能保证当前接口号变大更快。
  3. 如果库源代码自上次更新后发生了变化,则递增修订版(c:r:a 变为 c:r+1:a)。
  4. 如果自上次更新以来添加、删除或更改了任何接口,则递增当前并将修订设置为 0。
  5. 如果自上次公开发布以来添加了任何接口,则增加年龄。
  6. 如果自上次公开发布以来已删除或更改任何接口,则将年龄设置为 0。

切勿尝试设置接口编号,使它们与您的软件包的版本号相对应。这是一种滥用,只会助长对库版本目的的误解。相反,请使用 -release 标志(请参阅版本号),但请注意,您的软件包的每个版本都不会与任何其他版本二进制兼容。

您可能还想阅读Autotools Mythbuster 中有关库版本控制的内容,以更广泛地处理此事。

【讨论】:

    【解决方案2】:

    如何影响版本方案中的最后一位数字

    你可以通过指定它来影响它:

    -version-info 1:0:3
    

    【讨论】:

    • 不幸的是,当我设置“-version-info 1:0:1”时,会生成一个库“libxxx.so.0.1.0”
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多