动态库的命名规则

为方便管理依赖关系,创建或部署动态库时,必须遵循统一约定的规则才行,其中包括动态库的命名规则。

动态库共有三个不同的名字。
1) 每个动态库有一个包含了真正的库代码的文件名,通常被称为库的 realname ,命名格式通常为

主版本号:不同的版本号之间不兼容
次版本号:增量升级 向后兼容
发行版本号:对应次版本的错误修正和性能提升,不影响兼容性

其中so后缀中的x为主版本号,y为副版本号,z为发行版本号。例如,linux系统机器上zlib共享库的realname为    libz.so.1.2.8,这个文件是含有可执行的二进制代码的。

2) 每个动态库都有一个以"lib"为前缀且以".so.x"为结尾的被称为 soname

的特定名称,其中x为主版本号,soname命名格式通常为libxxx.so.x。例如,linux系统机器上zlib共享库的soname为libz.so.1。这个soname包含了动态库的主版本号,程序运行时会按照这个名称去找真正的库文件。

3) 编译链接依赖了动态库的应用模块时,链接器只认不带任何版本号的共享库名,可以将库名称作" linker name

例如,我的linux系统机器上zlib共享库的linkername为libz.so。也即,链接使用了动态库的程序时查找的动态库名称。例如:gcc -o test test.o -lz , 链接时就会找libz.so 。若没有这个文件,链接器就报错。

 

你可能感兴趣的:(动态库的命名规则)