如何在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。
链接时,请指定库的目录并使用rpath:
-Wl,-rpath,/绝对/路径/到/您/库-L /绝对/路径/到/您/库-库
-L告诉链接器在链接时在哪里可以找到您的库,并-rpath告诉它在运行时在哪里可以搜索该库。
-L
-rpath
请注意,-L并且-rpath需要包含.so文件的目录,而不是库文件本身的实际路径。