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

ajw*_*ood 3 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的路径与我以前看到的路径相同libfoo.so => /path/to/different/version/lib/libfoo.so.

谢谢,

安德鲁

Eme*_*ger 7

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

% patchelf --set-rpath /opt/my-libs/lib:/foo/lib program
Run Code Online (Sandbox Code Playgroud)

  • 根据维基百科(http://en.wikipedia.org/wiki/Rpath_(linking)),"使用RPATH的主要缺点是它的优先级高于LD_LIBRARY_PATH设置." (2认同)