在编译大多数开源库时,make命令将生成.la文件,该文件将具有library_namescurrent=11 age=9 revision=0版本信息。

我了解版本信息current=11 age=9 revision=0是从Makefile.am中的标志version-info生成的。通过仅了解版本信息,make如何生成库名称?

示例:对于libcrack.so

dlname='libcrack.so.2'
# Names of this library.
library_names='libcrack.so.2.9.0 libcrack.so.2 libcrack.so'

# Version information for libcrack.
current=11
age=9
revision=0


在Makefile.am中指定版本信息,如下所示

libcrack_la_LDFLAGS = -version-info 11:0:9


现在的问题是:make仅凭libcrack.so.2.9.0如何生成数字为2.9.0version-info

最佳答案

通常libtool库版本系统使用以下格式

soname.so.<current-age>.<age>.<revision>

这就是为什么在示例中引用问题libcrack.so.(11-9).9.0 = libcrack.2.9.0的原因。

更多详细信息,请参见library versioning

08-28 10:21