2010-04-08 116 views
1

红帽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 

有没有更好的方法来管理它?我正在考虑创建一条软线,但由于名称相同,我不确定这会起作用。

非常感谢,

回答

1

符号连接任何作品都处理这是一个非常好的办法。我会做一些稍微不同的事情。我会创建一个目录结构,如:

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

并在每个这些我会把实际的文件。然后,我将创建一个单独的目录:

/usr/CSAPI/lib 

只包含符号链接到实际文件lib_v1lib_v2

这样lib拥有最新版本,但是如果你需要,你可以只需更改LD_LIBRARY_PATH即可使用以前的版本。

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

这是假设库正确开发。我使用了许多没有正确处理库版本的公司库。 – 2010-04-08 05:36:21

+0

很抱歉,没有版本号。所有库都以共享库扩展名即* .so结尾。谢谢。 – ant2009 2010-04-08 05:45:18

+1

在这种情况下,可能使用Klatchko的解决方案,除了符号链接整个目录:/ usr/CSAPI/lib - >/usr/CSAPI/lib _ $ {current_version}而不是symlinking。 – Stephen 2010-04-08 05:49:38