我在Linux中遇到了以下问题。我有一些使用外部库的应用程序(该应用程序未与它链接)。我打开库dlopen
并使用其中的一些符号。当我尝试卸载库时出现问题dlclose
,我仍然看到加载的库/proc/.../maps
。
更多的是尝试使用以下内容:
...
while(dlclose(module) == 0);
...
导致无限循环并且库仍然被加载。
有没有办法检查/找到谁拥有图书馆?
我在Linux中遇到了以下问题。我有一些使用外部库的应用程序(该应用程序未与它链接)。我打开库dlopen
并使用其中的一些符号。当我尝试卸载库时出现问题dlclose
,我仍然看到加载的库/proc/.../maps
。
更多的是尝试使用以下内容:
...
while(dlclose(module) == 0);
...
导致无限循环并且库仍然被加载。
有没有办法检查/找到谁拥有图书馆?
来自“人 dlclose”:
The function dlclose() decrements the reference count on the dynamic
library handle handle. If the reference count drops to zero and no
other loaded libraries use symbols in it, then the dynamic library
is unloaded.
您很可能与“没有其他加载的库使用符号”条款发生冲突。
最好的办法是使用 运行LD_DEBUG=bindings
,然后查看哪些其他库绑定到您要卸载的库。
另请参阅此问题。