共享库创建软链接

时间:2010-04-08 05:25:39

标签: c

Redhat 5.5 gcc版本4.1.2

我有一个目录调用lib,在该目录中,我拥有所有共享库(大约30个),这些库是我们在使用API​​时从客户处获得的。我们与此API相关联。

目录结构:

/usr/CSAPI/lib

但是,我们的客户会更新他们的API,因此我们会获得新的库,通常大约3或4个。

我一直在做的是当我获得新的库时。是删除旧的并放入另一个目录。并用lib目录中的新库替换它们。

/usr/CSAPI/Old_libs

新旧将具有相同的名称。即。

libcs.so  < old
libcs.so  < new

有没有更好的方法来管理它?我想创建一个软线,但由于名称相同,我不确定这是否有效。

非常感谢,

2 个答案:

答案 0 :(得分:2)

通常,库是版本化的,而不仅仅是“同名”。

每个版本的/usr/lib目录中都有一个文件:

/usr/lib/libFLAC.so.8.2.0
/usr/lib/libFLAC.so.8.2.1
/usr/lib/libFLAC.so.8.2.2

然后将主要库版本符号链接到最新的次要版本:

/usr/lib/libFLAC.so.8 -> /usr/lib/libFLAC.so.8.2.2

这样做的好处是API更改将添加新文件并更新符号链接,但如果我需要指定特定的API版本号,则文件仍然就在那里。

这不是一成不变的,所以做适合你的发布过程的任何事情:)

答案 1 :(得分:1)

符号链接是处理此问题的一种非常好的方法。我会做一些略有不同的事情。我会创建一个目录结构,如:

/usr/CSAPI/lib_v1
/usr/CSAPI/lib_v2

并且在每个中我都会放入实际的文件。然后我会创建一个单独的目录:

/usr/CSAPI/lib

仅包含lib_v1lib_v2等实际文件的符号链接

这种方式lib具有最新版本,但如果需要,只需更改LD_LIBRARY_PATH就可以使用以前的版本。