その他の可視属性関連のコマンドライン・オプション

-fminshared

-fminshared オプションは、コンパイル単位がメイン・プログラム・コンポーネントの一部になり、共有可能なオブジェクトの一部としてリンクされないことを示します。メイン・プログラムで定義されたシンボルはプリエンプトできないため、このオプションにより、コンパイラは default 可視属性で宣言されたシンボルを protected 可視属性であるかのように扱います (つまり、-fminshared-fvisibility=protected を暗示します)。 また、コンパイラはメイン・プログラム用に位置に依存しないコードを生成する必要はありません。 グローバル・オフセット・テーブル (GOT) のサイズを減らしてメモリのトラフィックを減らす、絶対アドレス指定を使用することができます。

-fpic

-fpic オプションは、完全なシンボル・プリエンプションを指定します。 グローバル・シンボル定義は、明示的に他の方法で指定されなければ、グローバル・シンボル参照と同様に default 可視属性 (つまり、プリエンプト可能) になります。

-fno-common

初期化子がなく、extern または static キーワードのない次に示す通常の C/C++ ファイルスコープ宣言では、共通シンボルとして表現されます。

int i;

他のコンパイル単位にその名前用のグローバル定義がない場合を除いて、これらのシンボルは外部参照として扱われ、リンカはこれらのシンボルにメモリを割り当てます。 -fno-common オプションは、コンパイラが共通シンボルになるシンボルをグローバル定義として扱い、コンパイル時にシンボルにメモリを割り当てるようにします。 これは、コンパイラがシンボルにアクセスするときにより効率的な GP 相対アドレス指定を使用することを可能にします。