我正在使用包含.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如果要使用共享对象?
答案 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。然后发生了两件事: