我在SO上遇到了其他问题而没有运气,例如:
C++: dlclose doesn't unload the shared library
我遇到过两个共享对象(遗憾的是我无法公开代码)
我们说吧
liba.so
和libb.so
liba.so
隐式链接libb.so
。
并且应用程序使用liba.so
与dlopen()
标志明确链接RTLD_LAZY
。
一切正常,但dlclose()
没有卸载liba.so
,尽管它成功返回。 lsof
命令在加载时显示liba.so
和libb.so
。
正如上述问题的答案所示,dlclose()
只会减少引用计数。但由于没有其他人使用这些库,我希望dlclose()
能够实际卸载它。
我已经尝试过这两个问题,因为不同的应用程序有同样的问题。所以我猜这个问题在图书馆内。
有人可以就可能的原因提出建议。
答案 0 :(得分:0)
嗯......最后似乎找到了问题。
这是OpenSUSE中的一个错误。
这是链接: https://bugzilla.novell.com/show_bug.cgi?id=680125
代码在OpenSUSE 12.1
上运行,错误已在OpenSUSE 12.2
中解决。