我有同一个库的多个版本,我的程序动态链接到这些库。有时我想更改使用的版本。
我一直在阅读,出于安全原因,新版本的 Ubuntu 不再支持 LD_LIBRARY_PATH
。我可以将路径添加到 /etc/ld.so.conf
并运行 ldconfig
但我不会总是在系统上拥有 root 权限。
任何人都知道如何更改普通用户可以更改的库搜索路径?假设它经常发生,更新配置文件是最后的手段。
编辑:这是我的测试方式,我希望看到的等等:我在程序上运行 ldd
并查看 libfoo.so =>/some/path/到/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
。
谢谢,
安德鲁
最佳答案
您可以使用 patchelf更改任何可执行文件的 RPATH
(库搜索路径)。这是一个很酷的实用程序,不需要特殊权限即可运行。要将程序设置为首先搜索 /opt/my-libs/lib
,然后搜索 /foo/lib
,只需执行以下操作:
% patchelf --set-rpath /opt/my-libs/lib:/foo/lib program
关于ubuntu - Ubuntu 中的临时库搜索路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642166/