next up previous contents
Next: C コンパイラー cc のやや現実的な使い方 Up: C プログラムのコンパイル、実行 Previous: 常識事項 機械語、高級言語、コンパイル、コンパイラー

C コンパイラー cc の一番単純な使い方

C と切っても切れない関係にある UNIX オペレーティング・システムには、 cc と呼ばれる C コンパイラーが用意されているのが普通である。

UNIX では、C プログラムは、ファイル名の末尾を .c にする習慣が ある。

prog01.c という名前の C プログラムをコンパイルして、実 行可能な機械語プログラムを作るためには、例えば
\begin{screen}\begin{tabbing}
{\tt waltz\% }\underline{\tt cc prog01.c}
\end{tabbing}\end{screen}

とする。こうすると a.out という名前の実行可能プログラム・ファイ ルができる。これを実行するには
\begin{screen}\begin{tabbing}
{\tt waltz\% }\underline{\tt ./a.out}
\end{tabbing}\end{screen}

とする。環境変数 PATH にカレント・ディレクトリィ . が含ま れていれば1./ を省略し て
\begin{screen}\begin{tabbing}
{\tt waltz\% }\underline{\tt a.out}
\end{tabbing}\end{screen}

としても良い。

上のようにして、一つの実行可能プログラムを作る場合、実際には prog01.c に書かれたものを (機械語に) 翻訳した以外の機械語の列 (あらか じめ用意されているもの) も必要になる。つまり

\begin{displaymath}\mbox{C で書いたプログラムを翻訳した部分} +
\mbox{あらかじめ用意された部分}
=
\mbox{一つの実行可能プログラム}.
\end{displaymath}

だから実は cc の仕事は、
1.
C プログラムの機械語命令列への翻訳
2.
上で作成した機械語命令列と、別に用意された機械語命令列を結合
という二つのものからなる。後者を行うことをリンク (link) する、という。実際にはリンク専用のプログラム -- リンカー (linker) と呼ぶ -- を cc が呼び出すことで 作業が遂行される。UNIX における標準のリンカーは ld という名前を 持っている。



Masashi Katsurada 平成10年7月2日