我有一个可执行文件 A 用于dlopen
打开共享库 libB.so (位于同一目录中,所以我执行 LD_LIBRARY_PATH=. 让我的程序正确找到它)。这个库 libB.so 应该在 libC.so 中找到它的一些符号,它也位于同一目录中。
但是,/usr/lib64 中还有一个 libC.so(它已使用不同的参数编译,因此它没有相同的符号),并且由于未知原因,libB.so 尝试打开这个而不是那个那是在同一个目录中。当我做 aldd 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 不是一个选项,因为我不是平台的管理员)
谢谢