共享库 - 如何永久设置路径

时间:2013-11-28 16:18:43

标签: export shared-libraries setenv

我使用的程序有一些通常安装到/usr/lib的共享库。

但由于某种原因,我必须在本地拥有这些库。因此,要使我的程序运行(这取决于前者),我需要export LD_LIBRARY_PATH= ...或永久添加我的本地路径。这对我来说没问题,但我的软件用户不知道这一点,对他们来说这太复杂了。所以我的问题是:有没有办法自动设置我的程序在运行时调用的共享库的本地路径。

1 个答案:

答案 0 :(得分:0)

  

有没有办法自动设置我的共享库的本地路径

可能。

如果您使用的是Linux,并且您的应用程序已与一起与共享库一起安装到/some/prefix/bin/app/some/prefix/lib/libsharedlib.so,请将您的应用程序链接到:

gcc -o app -Wl,--rpath='$ORIGIN/../lib' main.o ... -lsharedlib

将完全达到您想要的结果(注意:您可以将两个应用和库移动到/another/dir,只要libbin$ORIGIN目录一起移动。)

注意:$ORIGIN周围需要单引号。

如果您使用的平台不支持$0,则另一种常见技术是将应用程序包装在shell脚本中,该脚本查看LD_LIBRARY_PATH,适当地设置app.bin ,然后执行真正的应用程序(通常称为app.exe或{{1}})。