2016-12-05 5 views

答えて

0

あなたは

-fvisibility=hidden 

すべてのエクスポート機能と可視性のデフォルトに設定し、共有ライブラリのユーザがその使用可能な変数を使用してコンパイルしている場合は、表示されます。そして、

nm -C -D <library>.so 

あなたはそれをデフォルトに設定したときとそうでないときの違いを見ることができます。

+0

これは疑問にはあまり答えません。問題は、ヘッダファイルに実装されているすべての実装を持つ構造体に違いがあるかどうかです。私が与えられた引数は、 "ヘッダファイルはライブラリと一緒に出荷されるので、それらの構造体に可視性のデフォルトを使用する必要はありません" ... – FCR

+0

可視性は共有ライブラリのシンボルを設定するかどうかです後に使うことができます。デフォルトに設定する必要がない場合、設定する必要はありません。 – Glick

1

完全インラインクラスの場合、可視性をデフォルトに設定する必要はありません。実際には、このヘッダーを含むすべての共有モジュールからクラスのシンボルを強制的にエクスポートしてバイナリのサイズを大きくし、起動を遅くするので、望ましくないことになります。

関連する問題