1

コンパイル時に別の library1.so にリンクされた binary1 があります。いくつかの機能を追加するために、libas_sdk.so を使用する library2.so を作成しました。

library2.so の機能は、dlopen(libas_sdk.so) が成功した場合にのみ機能し、そうでない場合は正常に戻り、他の作業を行います。

現在、library1.so は、必要に応じて library2.so を使用し、新しい機能を使用する必要があります。

複数のコンパイル オプションとリンク オプションを試しましたが、ldd または未解決のシンボル エラーが発生しました。

提案してください。

4

1 に答える 1

0

lib がすでにリンクされている場合、dlopen() は成功を返します。

library1.so は library2.so を使用する必要があるため、両方を binary1 にリンクする必要があります。(-library1 -llibrary2)

あなたの質問から、その library2.so は libas_sdk.so ランタイムにリンクされているようです。おそらく、init_library2() または何らかの設定データを含む関数を呼び出したときに発生します。

問題はリンクではなく、binary1 にあると思います。このライブラリー 2 (またはライブラリー 1) の初期化は、早すぎたり遅すぎたりします。IMHO binary1 は単純な -llibrary1 -llibrary2 にリンクする必要があります。

于 2013-11-19T21:00:29.957 に答える