ubuntu - Ubuntu 中的临时库搜索路径

标签 ubuntu dynamic-linking

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

我一直在阅读,出于安全原因,新版本的 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/

相关文章:

node.js - 当我运行 Node 时,什么也没有发生,永远一样

windows - 是否可以在没有 GL 加载程序库的情况下在 Windows 上链接到 OpenGL > 1.1?

cuda - 可分离编译后如何将主机代码与静态 CUDA 库链接?

ruby-on-rails - 乘客似乎没有运行(Capistrano/Rails/Apache/Ubuntu)

ubuntu - 如何在 ubuntu 上安装 libOpenCL.so

python - 在 Ubuntu 上为 Python3 而不是 Python2 安装库

c++ - 将库和 dll 包含到 C++ 项目中

c++ - 动态链接和 Python SWIG (C++) 在 C++ 中工作在 python 中失败

编译一个简单的C lua5.0程序,未定义的引用

tomcat - 使用符号链接(symbolic link)作为 Tomcat webapp 的基本目录