运行 共享对象文件版本不匹配的 ELF 文件

Running ELF file with version mismatch of shared object file

我有一个 ELF 文件,它链接到库的 X 版本的共享对象文件。我只能从库的版本 Y 访问共享对象文件的版本。当我尝试 运行 ELF 文件时,我得到 <ELF filename>: <shared object filename>: version X not found (required by <ELF filename>)。现在安装库的版本 Y 不是我的选择。有什么办法可以强制ELF文件忽略版本不匹配而尝试运行?我可以欺骗 ELF 文件或以某种方式编辑共享对象文件以更改外观版本吗?

没有。 "version" 不是库的版本,而是符号的版本(ELF 文件支持符号版本控制,以便在更改 API 时保持向后二进制兼容性,请参阅 this post for details)。

它实际上是在告诉您,它缺少一个符号(函数、常量、全局变量等),而您的库中不存在该符号。这意味着该库没有它需要的接口。