0
私はgccで共有ライブラリをコンパイルし、dlopenを使用してロードしています。dlopen - 共有オブジェクトファイルを開くことができません
-fvisibility=hidden
可視性フラグなしでライブラリをコンパイルすると、すべてが完全に機能します。しかし、フラグを付けてコンパイルすると、dlopenで次のエラーが発生します。
libtest.so: cannot open shared object file: No such file or directory
linbrary .soファイルが存在します。これは私にとっては奇妙なことです。なぜなら、いくつかのシンボルが隠されていると、何かが見つからないとdlsymが失敗すると思います。ただし、ライブラリ(別名dlopen)をロードすると、これはすでに失敗します。
また、私は、後に任意の成功せず、(EXTERN "C")を呼び出す関数に
__attribute__ ((visibility ("default")))
を追加してみました。誰も私がこれについて何をすることができるか知っていますか?あるいは、これをデバッグしてdlopenが失敗する理由を突き止める方法はありますか?私は可視性フラグを削除したくない。なぜなら、彼は実行可能ファイルサイズを大幅に減らすからだ。
'LD_DEBUG = all'で実行して、結果を報告できますか? – yugr
ありがとうございます。私の共有ライブラリは見つからなかった別のlibに依存していました。 LD_DEBUGありがとう、それについて知らなかった。 – goocreations