将共享库重新链接到不同版本的 libc

问题描述 投票:0回答:3

我有一个使用特定版本的 libc (

.so
) 编译的 Linux 共享库 (
GLIBC_2.4
),我需要在具有不同版本的 libc 的系统上使用它。我没有相关库的源代码,因此我无法为新系统重新编译。是否有可能将该库中的依赖项更改为不同的 libc?

c linker ld libc
3个回答
3
投票

如果您在具有旧版 glibc 的系统上需要 .so,则需要源代码并使用旧版 glibc 重新编译/重新链接它。另一种方法是在旧系统上的非默认位置安装所需的 glibc,并为需要此 .so 的可执行文件调整 LD_LIBRARY_PATH

如果有更新的 glibc,通常应该不是问题,因为 glibc 往往是向后兼容的。


3
投票
除非您的库确实使用了已更改的接口(不太可能),否则您只需对生成的

.so

 文件中的版本引用进行十六进制编辑即可。无论如何,它们都是文字。


1
投票
您能做的最好的事情就是为您的系统编译旧的 glibc 版本,然后使用该 glibc 和共享库构建您的应用程序。虽然丑...

© www.soinside.com 2019 - 2024. All rights reserved.