1

Linuxで次の問題に直面しました。外部ライブラリを使用するアプリケーションがあります (アプリケーションはリンクされていません)。でライブラリを開き、dlopenそこからいくつかのシンボルを使用します。でライブラリをアンロードしようとしたときに問題が発生しましたがdlclose、まだライブラリが にロードされてい/proc/.../mapsます。

以下を使用しようとする以上:

...
while(dlclose(module) == 0);
...

無限ループにつながり、ライブラリはまだロードされています。

ライブラリの所有者を確認/検索する方法はありますか?

4

1 に答える 1

3

「mandlclose」から:

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、アンロードするライブラリにバインドされている他のライブラリを確認することです。

この質問も参照してください。

于 2012-08-26T18:17:20.627 に答える