管理/文件共享库的名称

时间:2011-03-21 14:37:00

标签: linux shared-libraries

我目前正在处理共享库,有一点我不太懂。我将从维基百科的引用开始:

  

Unix和类Unix平台更常用的术语是共享库或共享对象;因此,.so文件扩展名最常用于识别此类环境中的共享库文件 - 通常后跟另一个点和版本号(例如libc.so.6)。

听起来不那么令人困惑,是吧?它实际上是。我刚看了一下我的/ usr / lib目录......很多.so文件。但我不明白的是:有时我的库有多个文件(例如libz.so - libz.so.1 - libz.so.1.2.5) - 确定不同的版本号,所以没问题...好吧没问题,但是在多个库的每种情况下,除了一个文件之外的所有文件都只是指向一个真实文件的符号链接。 所以我的简单问题:为什么?为什么有几个文件,几乎相同的文件名,然后只是链接到另一个文件。而这只是一次或两次发生的事情......

由于

1 个答案:

答案 0 :(得分:1)

这样做的原因是程序可以依赖于特定的库版本。

例如,程序可能会说“我需要库”。当前的libz.so默认版本将指向libz.so.1.2.5。

另一个程序可能会说“我需要libz版本1”。当前的libz.so.1默认版本指向libz.so.1.2.5。

libz.so.1.2.5主要存在,因此您确切知道已安装的版本。您可以拥有多个版本,并根据需要切换符号链接,但通常不会这样做。