我有一个可执行文件A,它使用dlopen
来打开一个共享库libB.so(位于同一目录中,所以我执行LD_LIBRARY_PATH =。来让我的程序找到它)。该库libB.so应该在libC.so中找到它的一些符号,这些符号也位于相同的目录中。更改链接到共享库
但是,/ usr/lib64中还有一个libC.so(它已用不同的参数编译,因此它没有相同的符号),并且由于未知原因,libB.so尝试打开这个而不是在同一目录中的那个。当我做ldd libB.so
时,我可以看到libC.so => /usr/lib64/libC.so
而不是libC.so => /path/to/program/A/libC.so
。
有没有办法在libB.so中更改此链接(如果可能,不需要重新编译),或者我应该重新编译libB.so,是什么让编译器选择在/ usr/lib64中使用libC.so而不是另一个?
(注:在/ usr/lib64下更换libC.so是不是一种选择,因为我不是这个平台的管理员)
感谢