我知道Linux下的共享库使用“ so数字”,即共享库的不同版本具有不同的扩展名,例如:
example.so.1
example.so.2
我的想法是要有两个不同的文件,以便在系统上可以存在一个库的两个版本(与Windows上的“ DLL Hell”相对)。我想知道这在实际中如何运作?通常情况下,我看到example.so
其实是一个符号链接到example.so.2
这里.2
是最新版本。然后,如何根据旧版本的应用程序example.so
正确识别它?关于必须使用什么数字有任何规定吗?还是这仅仅是约定?是否与Windows在系统之间传输软件二进制文件的情况不同,如果系统具有共享对象的较新版本,则从源代码进行编译时会自动链接到较旧的版本?
我怀疑这是有关的,ldconfig
但我不确定如何。