为什么/lib/ld-linux.so.2 soname版本颠簸是如此罕见?

时间:2013-09-09 13:30:36

标签: linux shared-libraries glibc

据我了解,“/ lib / ldl -linux.so.2”中的“2”很少变化。有些旧程序无法使用新库和新程序无法使用旧库。但它们都引用/lib/ld-linux.so.2,阻止安装这两个库。

BTW那version 'GLIBC_2.17' not found件事是什么?为什么版本不是在soname中,而是在其他地方?

1 个答案:

答案 0 :(得分:2)

每当更改库时,旧程序不能使用新版本的库,此编号将被更改。如果旧程序仍然可以使用较新的库(并且需要新版本的程序不会导致旧库崩溃),则无需更改数量,因为您只需安装最新版本的库。

据我所知,“2”(十年前为“1”)不应该再改变了。原因很简单:

“ld-linux.so.2”的第一个版本是以任何版本的“ld-linux.so.2”应该与使用该文件的任何程序一起工作的方式编写的 - 可能在打印时出现错误消息使用旧版本的“ld-linux.so.2”。

这意味着:永远不需要安装两个不同的“ld-linux.so.2”文件,但只需安装此文件的最新版本即可。您不应该简单地覆盖此文件,因为它与包含相同版本的其他文件(例如“libc.so.6”)捆绑在一起。

在加载器.so文件的“2”版本中,可能包含支持的版本号表。因此,“libc.so.6”,版本GLIBC_2.16,可能包含此版本的库也支持“GLIBC_2.15”的信息。 (新版本应向后兼容,因此应该是这种情况。)

程序可能包含所需版本的列表(例如:程序需要libc.so.6版本“GLIBC_2.17”)。 loader(ld-linux.so.2)检查库是否支持程序所需的版本,如果不支持则拒绝启动程序。在这种情况下,您的问题的错误消息由加载程序打印。