共有オブジェクトA.soがlibssl.a &に静的にリンクしています。別の共有オブジェクトB.soはlibssl.aに静的にリンクしています。スタティックライブラリが2回ロードされました
A.so & B.soにはlibssl.aのシンボルがGLOBALスコープであります。私はこれをreadelf -s A.soによって確認しました
私はA.soとB.soをロードする実行可能ファイルa.outを持っています。 a.outが終了すると、A.soのlibssl.aのシンボルの1つに 二重空きエラーが発生します。
libssl.aは各共有オブジェクトに静的にリンクされていますが、 が公開されているため、同じシンボルがローカルコピーを選択する代わりに共有される可能性があります。
これはどのような回避策ですか?ここのシンボルをローカルにするには?
助けてください
あなたの理論を確認するためにデバッガを使用することをお勧めします。 – jdigital
あなたは精巧にできますか? – KodeWarrior
あなたの状況にどのように適用するのかわからないので、ちょっとしたことです: 'dlopen'はRTLD_LOCALフラグを持っています。ですから、 'dlopen'でこれらのライブラリを開いた場合、おそらくそれを妨害すべきではありません。 – liori