4

例如,我创建了一个名为libXXX.so.0.0.0的共享库,其 soname 为libXXX.so.0。那么,我是否需要创建一个名为libXXX.so.0的符号链接并让它指向真正的共享库?还是我只需要创建一个名为libXXX.so的符号链接?

此外,如果我将库更新为libXXX.so.0.0.1怎么办?

  1. 如果我在系统库路径上安装共享库,例如 /libor /usr/lib,如何更新符号链接?使用 ldconfig

  2. 如果我在当前本地文件夹上安装共享库,如何更新符号链接?

顺便说一句,如何控制 Makefile 中的版本问题?我的意思是我需要添加一些命令,例如ln -sldconfig吗?

4

1 回答 1

3

是的,创建一个名为libXXX.so.0指向的符号链接libXXX.so.0.0.0

如果您希望人们能够构建链接到该库的程序,那么还要创建一个名为libXXX.so指向libXXX.so.0.

libXXX.so.0 符号链接将被程序加载器使用,因为这是程序将要查找的 soname。

链接器在构建程序时将libXXX.so使用符号链接,因为按照历史惯例,这就是链接器的工作方式。

此外,如果我将库更新为 libXXX.so.0.0.1 会怎样?

然后重新制作libXXX.so.0符号链接,使其指向libXXX.so.0.0.1. 没有其他东西需要改变。由于libXXX.so指向libXXX.so.0它的符号链接也会自动指向新库。

如何更新符号链接?

如果您使用某些打包系统(RPM,...)安装新库,则使用打包系统提供的任何功能来管理符号链接。如果您只是使用脚本或 Makefile 节,那么只需rm -f使用旧的符号链接和ln -s新的符号链接。

于 2012-06-03T01:12:35.343 回答