日期:2014-05-16  浏览次数:20698 次

复习Linux ELF共享库版本概念

soname for a shared library:

lib <library name> .so. <major ver>

?

fully-qualified soname for a shared library:

<path> /lib <library name> .so. <major ver>

?

real name for a shared library:

lib <library name> .so. <major ver> . <minor ver> . <release>

?

linker name for a shared library:

lib <library name> .so

?

一般soname对应的是一个符号链接,是在运行ldconfig时由其根据共享库header中的SONAME域创建的。如果创建共享库时未通过-Wl,-soname,...指定其SONAME,则ldconfig不会为其创建对应的soname符号链接。linker name对应的符号链接主要用于开发链接使用,一般是创建一个指向soname而不是real name的链接,以便减少版本更替时需要改变的链接数量(当然共享库数量较少时指向soname或real name均可,系统软件包也是两种方式都有采用的例子)。

?

<major ver>主要表明接口ABI兼容性,一般如果共享库接口产生了非向前兼容的更改就要升级<major ver>。