将共享库与可执行文件加载到同一目录中

时间:2019-02-07 09:21:24

标签: cmake shared-libraries

在Windows中,当exe和dll文件位于同一目录中时,可以运行需要共享库(.exe)的可执行文件(.dll)。

在Linux中,即使可执行文件和共享库(.so)位于同一目录中,Linux始终在最初构建.so的绝对目录中查找它,然后无法运行该可执行文件。

在运行可执行文件之前设置LD_LIBRARY_PATHRPATH环境变量是一种临时解决方案,但是我想在不设置环境变量的情况下进行设置,并使它的行为类似于Windows。

我该怎么办?我添加了"-rpath=$ORIGIN" to CMakelists,但仍然失败。

仅出于实验目的,我编写了一个简单的程序和另一个共享库,并尝试了dlopen,它可以按我的意愿工作。但是,在这种情况下,我不使用dlopen

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:在CMakelists.txt中为可执行文件添加rpath选项,对共享库添加