セットアップは次のとおりです。
A
ロードするアプリケーションがありますliba.so
(コンパイル時にリンクされます)liba.so
シンボルをエクスポートしますexpA
A
私はどちらかを制御しませんliba.so
- アプリケーション A は、指定したライブラリを
libmine.so
同じプロセスにロードできますdlopen
(プラグイン アーキテクチャを考えてください)。 expA
fromを使用する必要がありますlibmine.so
が、明示的にリンクせずにそれを見つける方法がわかりませんliba.so
。これは、これまで行ってきたことです。そのシンボルが私のローカルコピーのシンボルと同じアドレスにあることが保証されていないためliba.so
(またはそうですか?)、これは現実の世界では機能しないと思います。libmine.so
はクローズドソースになり、A
.
私はこのようなことをしたことがないので、ライブラリのロードの詳細については少し不明です. たとえば、dlopen("liba.so")
内から実行しようとlibmine.so
すると、既に読み込まれているライブラリまたは新しいコピーへのハンドルを取得できますか?
ロード方法に関して、libmine.so
私が知っているのは、それがロードされることRTLD_LAZY
だけです(そして他には何もありません)。
どんな助けや指針も大歓迎です!