一尘不染

如何通过系统库强制使用本地共享库?

linux

如何在Linux中的系统库上强制使用本地库?

我将可执行文件显式链接到我的project / lib目录中的某些.so文件,例如(../lib/libluajit.so)。

在gdb或使用ldd下运行我的可执行文件表明它仍然使用系统libluajit-5.1.so.2

然后,将LD_LIBRARY_PATH设置到我的project /
lib目录并导出它,然后运行我的可执行文件。不知何故,它仍在使用系统库(由gdb和ldd确认)

我想知道这是怎么可能的,以及如何使它强制使用我的project / lib目录中的本地libluajit.so。


阅读 317

收藏
2020-06-07

共1个答案

一尘不染

链接时,请指定库的目录并使用rpath:

-Wl,-rpath,/绝对/路径/到/您/库-L /绝对/路径/到/您/库-库

-L告诉链接器在链接时在哪里可以找到您的库,并-rpath告诉它在运行时在哪里可以搜索该库。

请注意,-L并且-rpath需要包含.so文件的目录,而不是库文件本身的实际路径。

2020-06-07