を使用して実行可能ファイルからロードされる Linux 共有ライブラリ foo.so がありますdlopen("foo.so", RTLD_NOW | RTLD_LOCAL)
。foo.so から、foo.so で定義されたシンボルを参照する別のライブラリー bar.so を dlopen したいのですが、リンカーがそれらを見つけられません。ロードを行う実行可能ファイルのソースがないため、RTLD_LOCAL を RTLD_GLOBAL に変更できません。foo.so をリンクすると役立つかもしれないと思い-Wl,--export-dynamic
ましたが、ローカル フラグを dlopen にオーバーライドしません。GCC の新しい属性可視化機能も、答えを提供しているようには見えません。
bar.so の未定義シンボルへの参照を foo.so のそれらの定義に解決するようリンカに指示できる方法はありますか? ? 私が思いつく唯一のことは、foo.so 自体から RTLD_GLOBAL を使用して foo.so を dlopen することです。次に、bar.so を dlopen しますが、これは少し面倒です。ありがとう。