例如,我创建了一个名为 的共享库。 libXXX.so.0.0.0 名称为 libXXX.so.0 .那么,我需要创建一个名为 的符号链接(symbolic link)吗? libXXX.so.0 让它指向真正的共享库?或者我只需要创建一个名为 的符号链接(symbolic link)吗? libXXX.so ?
此外,如果我将库更新为 会怎样? libXXX.so.0.0.1 ?
/lib
或 /usr/lib
,如何更新符号链接(symbolic link)?使用ldconfig ?
更新符号链接(symbolic link)?
顺便说一句,如何控制 Makefile 中的版本问题?我的意思是我是否需要添加一些命令,例如 ln -s 或 ldconfig ?
最佳答案
是的,创建一个名为 libXXX.so.0
的符号链接(symbolic link)指向libXXX.so.0.0.0
.
如果您希望人们能够构建链接到该库的程序,那么还要创建一个名为 libXXX.so
的符号链接(symbolic link)。指向libXXX.so.0
.
libXXX.so.0 符号链接(symbolic link)将被程序加载器使用,因为这是程序将要查找的 soname。libXXX.so
链接器在构建程序时将使用符号链接(symbolic link),因为按照历史惯例,链接器就是这样工作的。
Besides, what if I update the library to libXXX.so.0.0.1?
然后你重新制作
libXXX.so.0
符号链接(symbolic link),使其指向 libXXX.so.0.0.1
.没有其他东西需要改变。由于libXXX.so
符号链接(symbolic link)指向 libXXX.so.0
它也会自动指向新库。how to update the symlink?
如果您使用某些打包系统(RPM,...)安装新库,则使用打包系统提供的任何功能来管理符号链接(symbolic link)。如果您只是使用脚本或 Makefile 节,那么只需
rm -f
旧符号链接(symbolic link)和 ln -s
新的那一个。
关于shared-libraries - 如何控制 Linux 上的共享库版本问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10866402/