linux - 在 Linux 中使用 LD_PRELOAD 覆盖共享库
问题描述
我正在尝试修复似乎动态链接到旧版本 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)
...
那会起作用吗,还是将它们都放在那里会引起问题?
解决方案
推荐阅读
- reactjs - React JS 购物车添加功能
- javascript - 将路由动态导入 Vue 路由器
- python - 定时器在后台运行和调用文件
- vue.js - NUXTJS + Vuetify - SCSS 中的颜色
- java - Android Firebase 实时数据库 orderByChild 不起作用
- mysql - MySQL删除多个表上所有匹配记录的连接
- swift - “未能获得匹配的快照:评估 UI 查询时超时。” 在 XCUITest
- javascript - 如何使用棘轮通过单个 websocket 发送请求发送对象数组?
- python - 翻译 Python 字典中的数字代码值
- javascript - 传单有时会在设置为当前位置时显示世界地图