5

Linux x86 で共有ライブラリを作成しました。それを作成する際に、私はopensslに静的にリンクしました。OpenSSL は内部でのみ使用されますが、openssl シンボルがエクスポートされていることがわかります。これは、実行時に間違ったシンボルがロードされる可能性があるため、私のライブラリと openssl を必要とする他のライブラリに問題を引き起こしています。共有ライブラリに静的にリンクするときにすべての openssl シンボルがエクスポートされないようにする方法はありますか?

ありがとう、マイク

4

1 に答える 1

0

gccを使用していると仮定して、ライブラリをリンクするときに-fvisibility = hiddenを設定し、ライブラリソースで、表示するすべての関数をexternとしてマークします。opensslが独自の関数externを宣言していない限り、これは機能するはずです。

opensslがいくつかのシンボルexternを宣言している場合は、手動でシンボルをプラグマで非表示にすることができます。

関係する他のオプションがあります。利用可能なものの完全な説明については、fvisibilityセクションのgccドキュメントを確認してください。

于 2010-04-07T21:04:34.117 に答える