2014-08-31 25 views
2

我正在尝试编译和捆绑我为Linux提供的应用程序,这需要libgdiplus等外部库。当我尝试在没有安装GDIPlus的环境中运行应用程序时,它无法找到libgdiplus.so的本地副本,我将其作为我的应用程序在下一个目录中。如何链接要从本地目录加载的库?

如果我使用strace来查看发生了什么,我清楚地看到它检查了许多位置,如/ lib// usr/lib/etc,但从来没有本地目录。

如何告诉我的应用程序在本地目录中搜索外部库?

+1

使用LD_PRELOAD或LD_LIBRARY_PATH,请参阅'man ld.so'。但是,这意味着您必须首先找到安装应用程序的目录,或者编写一个用于设置环境的包装脚本,然后执行二进制文件。使用bash,$ 0指的是完整的路径,你可以从中得到目录。 – 2014-08-31 07:10:15

+0

我会仔细看看,但是非常重要的一点是,我们能够简单地部署二进制文件并使其在没有任何安装或包装脚本要求的情况下工作。 – 2014-08-31 07:14:53

回答

2

我找到了答案。我需要在链接器中使用rpath指定搜索路径,如下所示:

-Wl,-rpath,.