0

共有ライブラリーをリンクするために -qnoweakexp オプションを使用する利点と欠点は何ですか?

4

1 に答える 1

1

-qnoweakexpが設定されている場合、弱いシンボルはエクスポートされません。つまり、共有ライブラリは小さくなります(弱いシンボルがある場合)。

弱い記号は、#pragma weakでマークされたグローバルであるか、コンパイラが弱い記号であると判断しました(たとえば、インラインとしてマークされた関数は弱いと見なされる可能性があります)。リンクするときに、重複するシンボルが存在する場合、弱い場合を除いて、通常は最初のシンボルが優先されます。順序は次のとおりです。最初に強いシンボルが勝ち、強いシンボルがない場合は最初に弱いシンボルが勝ちます。

-qnoweakexpは、weakとしてマークされたシンボルなしで共有ライブラリを構築します。アプリケーションがこの共有ライブラリから弱いシンボルを実際に参照しない場合は、サイズが縮小されるため、このオプションを使用するのが理にかなっています。ただし、アプリケーションが実際に弱いシンボル(関数または変数)を使用している場合は、シンボルの解決が失敗するため、このオプションは明らかにお勧めできません。

于 2013-03-14T06:13:11.357 に答える