我使用的程序有一些通常安装到/usr/lib
的共享库。
但由于某种原因,我必须在本地拥有这些库。因此,要使我的程序运行(这取决于前者),我需要export LD_LIBRARY_PATH= ...
或永久添加我的本地路径。这对我来说没问题,但我的软件用户不知道这一点,对他们来说这太复杂了。所以我的问题是:有没有办法自动设置我的程序在运行时调用的共享库的本地路径。
答案 0 :(得分:0)
有没有办法自动设置我的共享库的本地路径
可能。
如果您使用的是Linux,并且您的应用程序已与一起与共享库一起安装到/some/prefix/bin/app
和/some/prefix/lib/libsharedlib.so
,请将您的应用程序链接到:
gcc -o app -Wl,--rpath='$ORIGIN/../lib' main.o ... -lsharedlib
将完全达到您想要的结果(注意:您可以将两个应用和库移动到/another/dir
,只要lib
和bin
和$ORIGIN
目录一起移动。)
注意:$ORIGIN
周围需要单引号。
如果您使用的平台不支持$0
,则另一种常见技术是将应用程序包装在shell脚本中,该脚本查看LD_LIBRARY_PATH
,适当地设置app.bin
,然后执行真正的应用程序(通常称为app.exe
或{{1}})。