我有一个用特定版本的libc(GLIBC2.4)编译的linux共享库(.so),我需要在具有不同libc版本的系统上使用它。我没有相关库的资源,因此我无法重新编译新系统。是否有可能将该库中的依赖关系更改为不同的libc?将共享库重新链接到不同版本的libc
回答
如果你需要在一个旧的glibc系统上的.so,你需要源代码,并重新编译/重新链接它与旧的glibc。另一种方法是在非默认位置的旧系统上安装所需的glibc,并为需要此操作的可执行文件调整LD_LIBRARY_PATH。so
如果有更新的glibc,那么它通常不会成为问题,因为glibc往往是向后兼容的。
你可以做的最好的事情是为你的系统编译旧的glibc版本,然后用你的glibc和你的共享库构建你的应用程序。丑陋虽然...
除非您的程序库真的使用更改过的接口(不太可能),否则您可以对生成的.so
文件中的版本进行hexedit引用。无论如何,它们都是文字。
非常黑客,问题也是如此。我不知道参考文献都是文字。 – 2012-01-12 19:06:26
GLIBC _...版本字符串不是全部文本,如果您将它们更改为二进制文件中的较低版本,该符号仍然不起作用。 – pts 2013-10-12 10:14:12
他们是文字。它们位于'.dynstr'字符串表中,就像要解析符号名称的字符串一样。 – 2013-10-12 12:31:33
- 1. 将共享库链接到共享库
- 2. 不同版本的共享库
- 3. 不能boost库链接到共享库
- 4. 如何将共享库与其他共享库链接到Linux?
- 5. 链接到Linux中的特定共享库版本
- 6. 链接到linux共享库
- 7. 将Matlab共享库链接到Qt(Windows)
- 8. cygwin:链接器找不到共享库
- 9. 链接共享库
- 10. 如何将可执行文件链接到共享库的通用版本?
- 11. 链接一个共享库静态到我的共享库
- 12. 建立共享库链接到其他不标准共享libarary
- 13. 将共享库与其他共享库链接是否好?
- 14. gcc的链接共享库
- 15. 拥有版本信息的CMAKE链接共享库
- 16. 重新链接使用隐式链接更新共享库的应用程序?
- 17. 链接到Qt中的共享库
- 18. 将Bash R链接到RStudio,版本/封装库不同步
- 19. 如何将2个libc版本链接到同一个应用程序中?
- 20. 数据库共享/版本
- 21. 共享数据库链接
- 22. 与共享库链接
- 23. Android.mk:共享库未链接
- 24. 为什么不能将共享库链接到内核代码?
- 25. 如何链接到共享库在c + +
- 26. 无法链接到共享库
- 27. 如何链接到共享库?
- 28. 更改链接到共享库
- 29. Eclipse CDT链接到共享库
- 30. Facebook共享链接脚本
我认为你需要使它运行在* glibc的*旧版本? – bmargulies 2010-01-15 12:18:21