微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 LD_PRELOAD 覆盖 Linux 中的共享库

如何解决使用 LD_PRELOAD 覆盖 Linux 中的共享库

我正在尝试修复一个似乎与旧版 GSL(GNU 科学库)动态链接的二进制文件

$ ldd my-binary
        ...
        libgsl.so.23 => /usr/lib/x86_64-linux-gnu/libgsl.so.23 (0x00007fc600d51000)
        ...

如果我使用 LD_PRELOAD 设置较新的版本,我的理解是旧版本将被替换。相反,我只是看到同一个库的两个实例:

$ LD_PRELOAD=/path/to/my/libgsl.so.25.0.0 ldd my-binary
        ...
        /path/to/my/libgsl.so.25.0.0 (0xsomething)
        ...
        libgsl.so.23 => /usr/lib/x86_64-linux-gnu/libgsl.so.23 (0x00007fc600d51000)
        ...

这会奏效,还是将它们放在一起会导致问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。