gcc
gccコマンドは特に指定をしない場合、プリプロセス→コンパイル→アセンブル→リンクという処理を一括してくれる。
オプションを指定することでこれらを個別に実施することができる(リンクは除く)のだが、よくオプション名を忘れてしまうので、その備忘録
プリプロセス
** 結果は標準出力へ出力される。
$gcc -E <FILE.c>
プリプロセス&コンパイル
** .sのファイル(アセンブリ言語のコード)が生成される。
$gcc -S <FILE.c>
アセンブル or プリプロセス&コンパイル&アセンブル
** .oのファイル(マシン語のコード)が生成される。
$gcc -c <FILE.s>
参考:#defineで内部で定義される文字列
内部的に#defineで定義されている文字列の多くは__(アンダースコア2つ)で始まるが、たまにそうでないものもある。たまにこれらと自分で定義した変数の名前が衝突して、意図しないプログラムの書き換えを引き起こすことがある(環境依存)。内部的に#defineで定義されている文字列を知っておけば、これを予防できる。
内部的に#defineで定義されている文字列を一覧で表示
**標準出力へ出力
$gcc -dM -xc -E /dev/null