gcc の使い方

自習のための URL

自宅で programing するために、以下の URL などから開発に必要な tool を手に入れてください。基本的に無料です。

http://sources.redhat.com/cygwin/download.html

PC Unix(Linux, FreeBSD 等) を使っている場合には C (gcc or egcs) は default で install されているはずです。

C を学ぶ場合の教科書としては、やはり C の開発者が執筆したオリジナルで定評 のある K & Rがよいと思います。K & R とはカーニハン、リッチ著、石田晴久訳、 「プログラミング言語 C 第 2 版」共立出版のことです。

拡張子

Unix では実行可能なオブジェクトファイルに拡張子はつけない。 Windows 系の場合には .exe となります。

.c ファイルから.oファイルを生成することを「コンパイルする」な どと言います。

gcc のメッセージ

エラーがない限りメッセージは表示されません。慣れないうちは -Wall オ プションを指定してコンパイルすると、自分のプログラムの欠点を指摘してくれる ので-Wall オプションを付けてコンパイルしてみてください。-Wall オプションとは警告(Warning)をすべて(ALL)表示しなさいと言う意味です。

コンパイル

ソースファイルをコンパイルし実行可能なプログラムを作るには
$ gcc -o (実行ファイル名) (ソースファイル名) \fbox{Ret}
とします。-o (実行ファイル名) を省略すると a.out というファイ ル名で実行ファイルが作成されます。Windows では a.exe というファイル が作成されます。

実行例

例 1
$ gcc -o first first.c \fbox{Ret}
(first(.exe) という実行ファイルができる)

例 2
$ gcc first.c \fbox{Ret}
(a.out(a.exe) という実行ファイルができる)

例 3
$ gcc -o second first.c \fbox{Ret}
(second(.exe) という実行ファイルができる)

コンパイル

実行ファイルではなくリロケータブルオブジェクトを作るには -c オプショ ンを使います。リロケータブルオブジェクトの拡張子は .o となります。

この方法は一つのプログラムが複数のファイルによって構成されるときに使われま す。リロケータブルオブジェクトから実行ファイルを作るときにはリンクをする必 要があります。

実行例

例 1
$ gcc -c first.c \fbox{Ret}
(first.o) というオブジェクトファイルができる)
例 2
$ gcc -c a1.c a2.c a3.c \fbox{Ret}
(a1.o a2.o a3.o というオブジェクトファイルができる)

リンク

リロケータブルオブジェクトファイルをリンクして実行ファイルを作る場合にも gcc を使います。以下の例は a1.o a2.o a3.o という 3 つのファイ ルから f という実行ファイルを作成する例です。
$ gcc -o f a1.o a2.o a3.o \fbox{Ret}

ライブラリ

数学関数を使ったプログラムを作る場合は数学関数ライブラリを リンクする必要がある。-l オプションを使います。
$ gcc (他の引数) -l(ライブラリ名) \fbox{Ret}
ここで l と ライブラリ名の間にはスペースが入らないことに注意してくだ さい。 数学関数の場合は -lm となります。

実行例

例 1
$ gcc -o first -c first.c -lm \fbox{Ret}
(first.c をコンパイルし数学ライブラリをリンクする)

gdb

プログラムにミスがあるとそのプログラムは強制終了する。このとき
Bus error (core dumped)
のようなメッセージが表示され、core というファイルにエラーに関する情 報が書き出されます。core ファイルは可読形式のファイルではないので通 常の方法では読み出せません。

上述のような実行できないプログラムを修正することをデバッグするといいます。 デバッグのためには gdb と呼ばれるデバッガを用います。gdb でデ バッグするためには実行ファイルにデバッグ情報を埋め込むオプション -g が必要です。

$ gcc -g (その他の引数) \fbox{Ret}
gdb は次のようにして起動します。
$ gdb (実行ファイル名) core \fbox{Ret}
gdb が起動するとプロンプト (gdb) が表示されます。 プログラムを起動するためには
(gdb) run \fbox{Ret}
とします。プログラムが中断してしまうときには
(gdb) where \fbox{Ret}
とするとどこで停止したかが表示されます。gdb を終了するには
(gdb) quit \fbox{Ret}
とタイプします。

演習 1

次のプログラムを fact1.c という名前でファイルに保存し コンパイルして実行してください。-Wall オプションを指定したときに 表示されるメッセージの意味を確認してください。

\begin{itembox}{program 1}
\begin{verbatim}...

演習 2

次のプログラムを bug.c という名前でファイルに保存しコンパイルして実 行してください。このプログラムにはバグがあるので実行すると強制終了します。 gdb を使ってどこにエラーがあるか確認してください。


\begin{itembox}{program 2}
\begin{verbatim}...