理论上,在一个 RHEL 版本中创建的 .so 文件可以在任何其他 RHEL 版本中使用吗?

理论上,在一个 RHEL 版本中创建的 .so 文件可以在任何其他 RHEL 版本中使用吗?

我已经完成了源包的编译并安装在自定义路径中,创建了二进制文件和一些共享对象库,并且该工具正在运行。

相同的安装可以在另一个 RHEL 版本中使用(至少,理论上这些库可以在另一个 RHEL 版本中使用吗?)

我所需要的只是至少图书馆应该可以工作。

一点解释会更有帮助。

答案1

同意评论者的意见@siblenx,表明glibc提供了一系列的兼容性。它执行此操作的方式(在版本 6 的发行范围内)是使用符号版本控制:引入每个符号(函数或数据)时,都会有一个相应的符号版本控制。版本附加到符号上,以便可以自动链接到正确的版本。

如果行为(主要是二进制界面)以后发生了变化,您的应用程序将使用旧版本的界面加载。向后看,该版本可能不存在,并且应用程序无法成功加载。

在更粗略的层面上,RHEL 上的大多数共享库也都有版本控制,但 glibc 通过单个共享库中的符号版本来支持兼容性范围。

进一步阅读:

相关内容