我有一个用特定版本的libc(GLIBC2.4)编译的linux共享库(.so),我需要在具有不同版本libc的系统上使用它。我没有相关库的来源,所以我无法重新编译新系统。是否有可能将该库中的依赖项更改为其他libc?
答案 0 :(得分:3)
如果你需要带有旧glibc的系统上的.so,你需要源代码并用旧的glibc重新编译/重新链接。另一种方法是在非默认位置在旧系统上安装所需的glibc,并调整LD_LIBRARY_PATH以获取需要它的可执行文件.so
如果有一个更新的glibc,它通常不应该是一个问题,因为glibc倾向于向后兼容。
答案 1 :(得分:3)
除非您的库确实使用了更改的接口(不太可能),否则您只需对生成的.so
文件中的版本的引用进行hexedit。无论如何,他们都是文本。
答案 2 :(得分:1)
您可以做的最好的事情是为您的系统编译旧的glibc版本,然后使用该glibc和您的共享库构建您的应用程序。丑陋虽然......