dlopen を使用して、実行時に共有ライブラリをロードしています
dlopen("SharedLibarary1.so", RTLD_NOW | RTLD_GLOBAL);
その共有オブジェクトでは、別の共有ライブラリ「SharedLibarary2.so」で定義された const char* を参照しています。
実行可能ファイル、および両方のライブラリが -rdynamic を使用して構築されています。
しかし、dlopen を使用すると、「/usr/lib/SharedLibarary1.so: undefined symbol」という実行時エラーが発生し、破損した const char* に未定義のシンボルがあることを示します。
GDB の「情報共有」では、エラーの時点で 2 番目のライブラリがロードされていないことがわかります。
最初のライブラリで行う前に 2 番目のライブラリで dlopen を実行すると、その問題はどのように解消されますか。
ローダーに未解決のシンボルの 2 番目のライブラリを強制的にロードさせるより良い方法はありますか?