C++设置动态库的版本号(软链接)

1,动态库版本命名规则

假设有一个动态库:libfooSdk.so.1.1.0,其对应的三个名称如下。

realname:libfooSdk.so.1.1.0
soname:libfooSdk.so.1
linkname:libfooSdk.so

linux的动态库的命名格式是libfooSdk.so.x.y.z
版本号遵循一个规则:

  • z: 最后一个z版本的变动一定是兼容的。
  • y: y版本升级一般向前兼容。所以这个y和z不能写死。
  • x: x版本变动一般是不兼容升级

2,如何在cmakelist中设置动态库的版本后?很简单,一行代码:

SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION 1.0.1 SOVERSION 1)

VERSION 对应relname的版本号
SOVERSION 对应soname的版本号

3,三个版本间的链接关系

make编译动态库之后,就会自动生成三个带版本的动态库,执行ll命令查看链接关系:
在这里插入图片描述
即:
linkname->soname->realname

在程序链接时只需要在cmakelist链接linkname即可

你可能感兴趣的:(C++,c++)