0

我正在使用一个程序,该程序具有一些通常安装到/usr/lib.

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

4

1 回答 1

0

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

也许。

如果您在 Linux 上,并且您的应用程序与共享库一起/some/prefix/bin/app安装到 say and/some/prefix/lib/libsharedlib.so中,那么将您的应用程序链接到:

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

将完全达到您想要的结果(注意:您可以将app和 library 移入/another/dir,只要将libbin目录一起移动,它仍然可以工作)。

注意:需要单引号$ORIGIN

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

于 2013-11-30T01:28:31.137 回答