共享库名称中的.0是指什么?

时间:2013-12-07 16:31:16

标签: shared-libraries

当尝试在linux下启动第三方二进制文件时,我经常会遇到“libX.so.0”的错误,即使libX.so位于我的/ usr / lib中也是如此。我一直认为只需将/usr/lib/libX.so软连接到/usr/lib/libX.so.0即可,但我似乎错了。

/usr/lib/libpng12.so.0: version `PNG12_0' not found

此名称中的_0是否与libpng12.so.0中的.0相关?如果是这样,究竟是什么意思?有没有办法从PNG12_0标识符或libpng12.so.0名称中识别我需要下载的源代码版本?

1 个答案:

答案 0 :(得分:1)

  

我经常遇到“libX.so.0”的错误,即使libX.so位于我的/ usr / lib

您可以阅读有关外部库版本控制here的信息。

  

此名称中的_0是否与libpng12.so.0中的.0相关?

很可能是的。

  

如果是的话,究竟是什么意思?

符号版本控制是库版本控制的GNU扩展。我找不到它的好描述,但是它允许单个外部版本库(例如libc.so.6)提供相同符号的多个不兼容的实现(在符号版本控制之前,你每次引入不兼容的接口时都必须更新库的外部版本;但是如果没有符号版本控制,则必须更新。

长话短说:_0意味着开发人员认为它意味着什么。