.so.0和.so.0.0.0文件之间的区别

时间:2010-01-05 03:04:53

标签: linux

我正在使用包含.so.0文件的市场数据源实现。然而,这些是“软链接”实际的.so.0.0.0文件。为什么这样做?

当我尝试复制这些.so.0链接时,它最终会复制.so.0.0.0文件的精确副本,但带有.so.0前缀。

添加评论:

所以我有一个libfoo.so文件,它正由java通过jni访问。这个libfoo.so文件实际上是指向libfoo.so.0.0.0的软链接如果我没有libfoo.so会发生什么。 java /或其他任何编译过的代码怎么样,弄清楚libfoo.so.0.0.0如果要使用共享对象?

2 个答案:

答案 0 :(得分:8)

这是程序可以绑定到具有相同接口的任何版本的libfoo(我想要对libfoo进行最新更新),或者绑定到特定版本(我想要稳定性,只有我测试的确切版本)。

答案 1 :(得分:8)

存在.0和.0.0.0文件,以便可以进行版本控制:

  • foo.0代表库的.0版本。该库的所有.0版本将使用相同的接口,但可能有不同的实现。 (希望以后的实现比早期实现的bug少。)

  • foo.0.0.0代表.0版本的具体实现。

现在,拥有软链接并没有用。但这是可能发生的事情:

foo的程序员在他的库中发现了一个错误。他发布了foo.0.0.1。 foo.0现在链接到foo.0.0.1。然后发生了两件事:

  • 链接到foo.0的所有文件将自动更新为foo.0.0.1。
  • 链接到foo.0.0.0的所有文件将继续使用旧的foo.0.0.0