我有一个ELF文件,链接到一个库的X版本的共享对象文件。我只能访问库的Y版本的共享对象文件的版本。当我尝试运行ELF文件时,我得到的是 <ELF filename>: <shared object filename>: version X not found (required by <ELF filename>)
. 安装Y版本的库对我来说现在不是一个选择。有什么方法可以迫使ELF文件忽略版本不匹配并尝试运行?我可以愚弄ELF文件或以某种方式编辑共享对象文件来改变明显的版本吗?
不,"版本 "不是库的版本,而是符号的版本(ELF文件支持符号版本化,以便在改变API时保持向后的二进制兼容性,请参见《ELF文件》。本篇).
实际上它对你说的是,它缺少一个符号(函数、常量、全局等),而这个符号在你的库中是不存在的。也就是说,这个库没有它所需要的接口。