Windows上でGCCを使用してコンパイルを行う

gccを使用したC言語の基本的なコンパイル方法を紹介する。大学の理工系学部もしくは専門学校等でC言語を学んだ方や、プログラマとして日常的にgccを使用されている方は読み飛ばしていただきたい。
なお、例として以下のソース(HelloWorld.c)を使用するものとする。

/* Header files */
#include <stdio.h>
#include <stdlib.h>

/* main */
int main ( int argc, char *argv[] ) {
  int i; /* 使用されない変数 */

  printf ( "Hello world\n" );
  return EXIT_SUCCESS;
}
単純なコンパイル

コンパイルの方法であるが、単純にgccコンパイルを行うだけであれば、コマンドプロンプトを起動し以下のコマンドを入力すればよい。

gcc コンパイルしたいファイル名

コンパイルに成功した場合はa.exe(Windowsの場合)という名前の実行ファイルが作成される。例えば、上記のHelloWorld.cをコンパイルして実行すると以下が表示されるはずである。

> gcc HelloWorld.c
> a.exe
Hello world

なお、コンパイルに失敗した場合は行番号とエラー内容が表示される。

単純なコンパイル2
コンパイル時に実行ファイルの名前を指定したい場合は、以下のように-oオプションをつけてコンパイルを行う。

gcc -o コンパイルしたいファイル名 実行ファイル名

単純なコンパイル3
複数のファイルをコンパイルして1つの実行ファイルを作成したい場合は、以下のようにコンパイルしたいファイル名をスペースで区切って記述する。

gcc コンパイルしたいファイル名1 コンパイルしたいファイル名2 ...

単純なコンパイル まとめ
gccコマンドの形式を一般化すると以下のようになる。

gcc [options] file...

警告オプション
コンパイル時に、より堅実な構文チェックを行いたい場合は、-Wallオプションをつけてコンパイルを行う。-Wallオプションは、gccにいくつも用意されている警告オプションの中で、もっとも強力な構文チェックを行うオプションである。
上記のHelloWorld.cを-Wallオプションをつけてコンパイルすると、以下のようなエラーメッセージが表示される。

> gcc -Wall HelloWorld.c
HelloWorld.c: In function 'main':
HelloWorld.c:7: warning: unused variable 'i'

これは、HelloWorld.cの7行目に使用されていない変数iがあるためである。
このようにバグの原因となりうる処理をコンパイラ側が見つけて忠告してくれるため、デバッグ段階では積極的に-Wallオプションを活用すべきである。

最適化オプション
コンパイラの重要な機能として最適化がある。gccには最適化オプションが用意されており、それを指定することにより最適化を行うことができる。以下に最適化オプションを示す。

gcc -o<number>

number部分には0〜3までの数値が入る。この数値が大きくなるほど強力な最適化を行い、0を指定すると最適化を行わない。
最適化を行うと、最適化を行わない場合に比べてコンパイルにかかる時間が増大する。そのためコンパイル時にエラーや警告が多く検出された場合は、一端最適化オプションをはずすとよいだろう。

その他のコマンドオプション
gccには上記で取り上げたコマンドオプションの他にさまざまなコマンドオプションが用意されている。
各コマンドオプションについての説明は以下のサイトが詳しく、そして分かりやすい。
KI's Unofficial GNU Manual Translation Project