Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何链接要从本地目录加载的库?_C++_Linux_Gdi+ - Fatal编程技术网

C++ 如何链接要从本地目录加载的库?

C++ 如何链接要从本地目录加载的库?,c++,linux,gdi+,C++,Linux,Gdi+,我正在尝试编译并绑定一个Linux应用程序,它需要一些外部lib,比如libgdiplus。当我尝试在没有安装GDIPlus的环境中运行应用程序时,它无法找到libgdiplus的本地副本。因此,我将在下一个目录中作为我的应用程序运行 如果我使用strace查看发生了什么,我可以清楚地看到它检查了许多位置,例如/lib//usr/lib/等,但从未检查过本地目录 如何让我的应用程序在本地目录中搜索外部lib?我找到了答案。我需要在链接器中使用rpath指定搜索路径,如下所示: -Wl,-rpat

我正在尝试编译并绑定一个Linux应用程序,它需要一些外部lib,比如libgdiplus。当我尝试在没有安装GDIPlus的环境中运行应用程序时,它无法找到libgdiplus的本地副本。因此,我将在下一个目录中作为我的应用程序运行

如果我使用strace查看发生了什么,我可以清楚地看到它检查了许多位置,例如/lib//usr/lib/等,但从未检查过本地目录


如何让我的应用程序在本地目录中搜索外部lib?

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

-Wl,-rpath,.

使用LD_预加载或LD_库路径,请参阅
manld.so
。但是,这意味着您必须首先找到安装应用程序的目录,或者编写一个包装器脚本来设置环境,然后执行二进制文件。使用bash,$0指的是完整的路径,您可以从中派生目录。我将看一看,但是非常重要的是,我们能够简单地部署二进制文件并使其工作,而无需任何安装或包装脚本要求。