单个主机上的多个glibc库

单个主机上的多个glibc库,第1张

单个主机上的多个glibc库

在同一个系统上很可能有多个版本的glibc(我们每天都这样做)。

但是,您需要知道glibc由许多必须匹配的部分(200多个共享库)组成。其中一件是ld-linux.so.2,它 必须
与libc.so.6匹配,否则您将看到所看到的错误。

链接时,ld-linux.so.2的绝对路径被硬编码到可执行文件中,并且在链接完成后不能轻易更改。

要构建可与新glibc一起使用的可执行文件,请执行以下 *** 作:

g++ main.o -o myapp ...    -Wl,--rpath=/path/to/newglibc    -Wl,--dynamic-linker=/path/to/newglibc/ld-linux.so.2

-rpath
连接选项将在库运行时加载器搜索
/path/to/newglibc
(这样你就不必组
LD_LIBRARY_PATH
运行前),并
-dynamic-linker
选择将“硬”路径正确
ld-linux.so.2
应用程序中。

如果您无法重新链接

myapp
应用程序(例如,因为它是第三方二进制文件),则不会丢失所有内容,但会变得更加棘手。一种解决方案是为其设置合适的
chroot
环境。另一种可能性是使用rtldi和二进制编辑器。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5012086.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存