我的程序动态链接的同一个库的多个版本。有时候我想更改使用的版本。
出于安全原因,我一直在阅读新版本的Ubuntu不再支持LD_LIBRARY_PATH
。我可以将路径添加到/etc/ld.so.conf
并运行ldconfig
,但我不会总是拥有系统的root权限。
任何人都知道如何更改普通用户可以进行的库搜索路径?假设经常发生更新配置文件是最后的手段。
编辑:以下是我正在测试的内容,我希望看到的内容等等:我在程序上运行ldd
并查看libfoo.so => /some/path/to/lib/libfoo.so
。我将/path/to/different/version/lib
(其中包含名为libfoo.so的文件)添加到LD_LIBRARY_PATH
并重新运行ldd
。当我希望看到libfoo.so => /path/to/different/version/lib/libfoo.so
时,libfoo.so的路径与以前相同。
谢谢,
安德鲁
答案 0 :(得分:7)
您可以使用patchelf更改任何可执行文件的RPATH
(库搜索路径)。它是一个很酷的实用程序,不需要特殊的权限来运行。要将程序设置为首先搜索/opt/my-libs/lib
然后/foo/lib
,请执行以下操作:
% patchelf --set-rpath /opt/my-libs/lib:/foo/lib program