dlopen
共有ライブラリ libB.so を開くために使用する実行可能ファイル A があります(同じディレクトリにあるため、LD_LIBRARY_PATH=. を実行してプログラムに適切に見つけさせます)。このライブラリ libB.so は、同じディレクトリにある libC.so でそのシンボルの一部を見つけることになっています。
ただし、 /usr/lib64 には libC.so もあり (これは異なるパラメーターでコンパイルされているため、同じシンボルはありません)、不明な理由で、libB.so は 1 つの代わりにこれを開こうとします。つまり、同じディレクトリにあります。私がするとき、私はの代わりにldd libB.so
見ることができます。libC.so => /usr/lib64/libC.so
libC.so => /path/to/program/A/libC.so
libB.so でこのリンクを変更する方法はありますか (可能であれば再コンパイルせずに)、または libB.so を再コンパイルする必要がある場合、コンパイラが他のものではなく /usr/lib64 で libC.so を使用することを選択した理由は何ですか?
(注: 私はプラットフォームの管理者ではないため、/usr/lib64 の libC.so を置き換えることはできません)
ありがとう