「https://qiita.com/h_hiro_/items/4db6a7478fb0ff333d9f」が参考になります。
【AS・GCC(狭義のコンパイラ)・LDで32bitのバイナリを生成するオプション】
as --32
gcc -m32
ld -m elf_i386
【GCC(コンパイラドライバ)におけるオプション】
-Wall
警告をすべて表示する。
-nostdinc
ヘッダファイルの検索において、システム標準のディレクトリを対象としない。
-I
オプションで指定したディレクトリ(と、状況によるがカレントディレクトリ)のみが検索対象となる。
-nostdlib
リンク時にシステムスタートアップのファイルやライブラリを利用しない。明示的に指定したライブラリのみがリンカに渡される。またシステムライブラリを使うためのオプション(
-static-libgcc
や-shared-libgcc
)も無視される。
-fno-builtin
コンパイラのビルトイン関数を利用しない。
gccでは改行を最後にもつprintfをputsに置き換えたりするが、このようなことを抑制する。
-fno-pic
位置独立コードの生成。
似たようなオプションや詳細は「https://fromnand.hatenadiary.jp/entry/2019/09/16/000053」
-mint32
intを32bitとする。
-I(アイ)
ヘッダファイルの検索先を指定する。
上のnostdincと組み合わせることが多い。
-g
デバッガを利用する場合に指定するとよい。
-O(0, 1, 2, s)
-O0は最適化レベル0。
-O1は最適化レベル1。
-O2は最適化レベル2。
-Osはサイズの最適化を行う。
-static
ライブラリを静的リンクする。
-T
リンカスクリプトを指定する。
-L
ライブラリの検索先を指定する。
あんまり使わない...??