Linux动态库中的数字后缀是什么意思?

Linux动态库中的数字后缀是什么意思?

以下是一个例子:

~$ ls /lib/*.so* | head -n 10
/lib/ld-2.13.so
/lib/ld-Linux.so.2
/lib/libacl.so
/lib/libacl.so.1
/lib/libacl.so.1.1.0
/lib/libanl-2.13.so
/lib/libanl.so.1
/lib/libattr.so
/lib/libattr.so.1
/lib/libattr.so.1.1.0

so最后一行等后面的数字1.1.0代表什么意思?

我的第一个猜测是它们是版本号,但是:

~$ pacman -Qo /lib/libattr.so*
/lib/libattr.so is owned by attr 2.4.46-1
/lib/libattr.so.1 is owned by attr 2.4.46-1
/lib/libattr.so.1.1.0 is owned by attr 2.4.46-1

因此1.1.0似乎与据报道的库的版本没有任何联系2.4.46

答案1

它们是库的不同版本。不同的应用程序可能需要不同的版本,因此每个文件都包含版本名称,这样它们就可以同时安装。您会发现没有版本号的文件实际上通过符号链接指向具有版本号的文件之一,因此需要特定版本可以简单地请求没有版本号的库并获取系统上安装的最新版本。

相关内容