Ubuntu中的临时图书馆搜索路径

时间:2011-01-09 22:10:34

标签: ubuntu dynamic-linking

我的程序动态链接的同一个库的多个版本。有时候我想更改使用的版本。

出于安全原因,我一直在阅读新版本的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的路径与以前相同。

谢谢,

安德鲁

1 个答案:

答案 0 :(得分:7)

您可以使用patchelf更改任何可执行文件的RPATH(库搜索路径)。它是一个很酷的实用程序,不需要特殊的权限来运行。要将程序设置为首先搜索/opt/my-libs/lib然后/foo/lib,请执行以下操作:

% patchelf --set-rpath /opt/my-libs/lib:/foo/lib program