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
有没有更好的方法来管理它?我想创建一个软线,但由于名称相同,我不确定这是否有效。
非常感谢,
答案 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_v1
,lib_v2
等实际文件的符号链接
这种方式lib
具有最新版本,但如果需要,只需更改LD_LIBRARY_PATH就可以使用以前的版本。