libfoo.so.1
に依存するライブラリがあるとldd
しlibbar.so.1
ます。ただし、libbar.so.1
現時点では利用できません。libfoo.so.1
私のアプリは、まったく必要のない関数を呼び出す必要がありlibbar.so.1
ます。
をロードし、関数シンボルを解決してから、依存関係を満たさlibfoo.so.1
ずに呼び出す方法はありますか? libbar.so.1
「やっていることはわかっているから、もうやらせて」というケースです。RTLD_LAZY フラグを試しましたが、シンボルをロードしないlibbar.so.1
前にライブラリをロードしようとします。
編集
これが正確な状況です。
プレイヤーは 3 人です。
libbar.so.1
LD_LIBRARY_PATH
または以外のパスldconfig
にあり、依存関係がすべて解決されている共有ライブラリlibfoo.so.1
は、 とは異なるディレクトリにある共有ライブラリですが、libbar
に依存していlibbar
ます。実行時に、libfoo
を見つける場所がわかりますlibbar
。App
libfoo
、実行時のある時点でロードする必要があるバイナリ アプリケーション。
App
を見つける場所はわかりませんがlibbar
、知っていることはlibfoo
知っています。私が達成しようとしているのは、すべての依存関係を最終的に解決し、すべての人を幸せにするために、の現在の作業ディレクトリを の場所にlibfoo
変更するだけの init 関数を持つことです。App
libbar
libfoo
最終的にlibbar
は、この init 関数ではなく、でものを呼び出す必要があります。シンボルは最終的に実際の関数に解決する必要があるため、スタブの作成は機能しないと思います。