库文件名中.so后面的数字代表什么意思?

库文件名中.so后面的数字代表什么意思?

好像不是版本,这里有一个示例名称:libcurl.so.4.3.0 版本 7.40

me@pc:/somefirmware/extracted/lib$ strings libcurl.so.4.3.0 | grep -i "libcurl"
libcurl.so.4
# This file was generated by libcurl! Edit at your own risk.
# Fatal libcurl error
Protocol "%s" not supported or disabled in libcurl
CLIENT libcurl 7.40.0
CLIENT libcurl 7.40.0
CLIENT libcurl 7.40.0
libcurl/7.40.0
Unrecognized content encoding type. libcurl understands `identity', `deflate' and `gzip' content encodings.
A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision.
A libcurl function was given a bad argument
An unknown option was passed in to libcurl
libcurl is now using a weak random seed!

第二个问题是如何获取正确的版本号,但我觉得这可能是不可能的(在 100% 的情况下都无法做到)。在这里,您可以使用字符串获取它,但在其他库中,它将产生 10 个不同的版本,例如

答案1

“.so”(共享对象)是一个库。因此,它为链接到它的程序提供了一个定义的接口,以利用库提供的功能,也称为API。在共享对象中,此 API 是有版本的,因此使用该库的程序可以使用与其兼容的版本。另请参阅这个答案关于“Unix 和 Linux”。

您提到的库版本可以独立于 API 版本。库版本将描述构成库功能的代码,即实现。当修复错误或优化算法时,它可能会增加。但同时 API 可能保持稳定,这意味着函数名称及其参数不会改变,因此 API 版本保持不变。

.so 后面的数字描述 API 版本。

相关内容