UNIX環境ではCコンパイラは標準的についているものは cc(C Compiler)という名前です。 またGNUプロジェクトのCコンパイラはgccという名前で インストールされていることがあります。基本的な 使い方はccと同じですからccの部分をgccと読み替えてください。
cc ソースファイル名 cc foo.c
とするのが一番基本的な使い方です。例ではfoo.cを コンパイルして実行ファイルを生成します。実行ファイルは カレントディレクトリにa.outという名前で作られます。 ですが実行ファイルが必ずa.outという名前になってしまうのは 困りものですね。 作られる実行ファイル名を指定したい場合は-oオプションを 使います。
cc foo.c -o abc
とすると、生成される実行ファイル名はa. outではなくabcとなります。
C言語などの言語では、実行ファイルを作り出す過程で 中間オブジェクトファイル(.o)/*要説明*/を生成するのが一般的です。 オプションを指定しない場合はこの中間オブジェクトを 生成しないのですが、実際にはコンパイルとリンクの 2つの段階からccの動作が成りたっています。コンパイルのみを行い、中間オブジェクトを生成するには -cオプションを使います。
cc -c foo.c
とすると中間オブジェクトファイルfoo.oが生成されます。 -oを指定しない場合はこのようにベース名.oという名前が つけられます。
中間オブジェクトをリンクし実行ファイルを生成するには オブジェクトファイルをccに与えます。
cc -o foo foo.o
とするとfoo.oをリンクして実行ファイルfooを作ります。
数学関数などシステムに用意されている関数群は ライブラリと呼ばれ通常/usr/libにあります。 それぞれのライブラリはlibbar.aというようなファイルに なっていて、この.a形式は いくつかの中間オブジェクトを結合したものです。
これらのライブラリを利用するためには ccで-lオプションを使います。
上の例ではfoo.cで三角関数sin()を使っていたとします。 sin()を計算する関数はlibm.aに含まれています。 ですからリンク時に
cc -o foo foo.o -lm
というように-lm(-lとmの間は空けてはいけません)とlibm.a から先頭のlibと.aをとったものを指定します。
(例)
使いたいライブラリ オプション /usr/lib/libncurses.a -lncurses /usr/lib/libcrypt.a -lcrypt