gcc の使い方
自宅で 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 版」共立出版のことです。
- .c : C で書かれたプログラムのソース
- .o : リロケータブルオブジェクト
Unix では実行可能なオブジェクトファイルに拡張子はつけない。
Windows 系の場合には .exe となります。
.c ファイルから.oファイルを生成することを「コンパイルする」な
どと言います。
エラーがない限りメッセージは表示されません。慣れないうちは -Wall オ
プションを指定してコンパイルすると、自分のプログラムの欠点を指摘してくれる
ので-Wall オプションを付けてコンパイルしてみてください。-Wall オプションとは警告(Warning)をすべて(ALL)表示しなさいと言う意味です。
ソースファイルをコンパイルし実行可能なプログラムを作るには
$ gcc -o (実行ファイル名) (ソースファイル名)
|
|
とします。-o (実行ファイル名) を省略すると a.out というファイ
ル名で実行ファイルが作成されます。Windows では a.exe というファイル
が作成されます。
実行例
- 例 1
- $ gcc -o first first.c
(first(.exe) という実行ファイルができる)
- 例 2
- $ gcc first.c
(a.out(a.exe) という実行ファイルができる)
- 例 3
- $ gcc -o second first.c
(second(.exe) という実行ファイルができる)
|
|
実行ファイルではなくリロケータブルオブジェクトを作るには -c オプショ
ンを使います。リロケータブルオブジェクトの拡張子は .o となります。
この方法は一つのプログラムが複数のファイルによって構成されるときに使われま
す。リロケータブルオブジェクトから実行ファイルを作るときにはリンクをする必
要があります。
実行例
- 例 1
- $ gcc -c first.c
(first.o) というオブジェクトファイルができる)
- 例 2
- $ gcc -c a1.c a2.c a3.c
(a1.o a2.o a3.o というオブジェクトファイルができる)
|
|
リロケータブルオブジェクトファイルをリンクして実行ファイルを作る場合にも
gcc を使います。以下の例は a1.o a2.o a3.o という 3 つのファイ
ルから f という実行ファイルを作成する例です。
$ gcc -o f a1.o a2.o a3.o
|
|
数学関数を使ったプログラムを作る場合は数学関数ライブラリを
リンクする必要がある。-l オプションを使います。
$ gcc (他の引数) -l(ライブラリ名)
|
|
ここで l と ライブラリ名の間にはスペースが入らないことに注意してくだ
さい。
数学関数の場合は -lm となります。
実行例
- 例 1
- $ gcc -o first -c first.c -lm
(first.c をコンパイルし数学ライブラリをリンクする)
|
|
プログラムにミスがあるとそのプログラムは強制終了する。このとき
のようなメッセージが表示され、core というファイルにエラーに関する情
報が書き出されます。core ファイルは可読形式のファイルではないので通
常の方法では読み出せません。
上述のような実行できないプログラムを修正することをデバッグするといいます。
デバッグのためには gdb と呼ばれるデバッガを用います。gdb でデ
バッグするためには実行ファイルにデバッグ情報を埋め込むオプション -g が必要です。
$ gcc -g (その他の引数)
|
|
gdb は次のようにして起動します。
$ gdb (実行ファイル名) core
|
|
gdb が起動するとプロンプト (gdb) が表示されます。
プログラムを起動するためには
(gdb) run
|
|
とします。プログラムが中断してしまうときには
(gdb) where
|
|
とするとどこで停止したかが表示されます。gdb を終了するには
(gdb) quit
|
|
とタイプします。
次のプログラムを fact1.c という名前でファイルに保存し
コンパイルして実行してください。-Wall オプションを指定したときに
表示されるメッセージの意味を確認してください。
次のプログラムを bug.c という名前でファイルに保存しコンパイルして実
行してください。このプログラムにはバグがあるので実行すると強制終了します。
gdb を使ってどこにエラーがあるか確認してください。