使用 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 (将#修改为@)