next up previous
Next: 変数の宣言, 整数の演算 Up: 計算機言語 I 第2回 はじめての Previous: Hello, world. プログラムの説明

gcc の動作と用語説明等

コマンド gcc は一つのプログラムではなく, 少なくとも次のプログラム (プロセス)を作り出します. 下の図の四角く囲まれた部分に書かれているのは, その時に使うファイル名です.


$ \fbox{*.c}\stackrel{\rm {cpp}}{\longrightarrow}\fbox{*.c}
\stackrel{\rm {ccom}...
...}{\longrightarrow}\fbox{*.o}
\stackrel{\rm {ld}}{\longrightarrow}
\fbox{a.out} $

cpp
C preprocessor: C compiler (ccom) が処理をする前に, コメント文の削除や, マクロの展開などの文字列処理の部分を受け持って, 事前に処理をするものだと思ってください.

ccom
C compiler: C 言語の文法で記述された処理内容を, assembly 言語に変換するプログラム.

as
Assembler: assembly 言語で書かれた内容を, 機械語(2進法で記述されもの)に変換するプログラム.

ld
Link editor: リンカともいう. 上の 2-1.c ではコンパイルした結果は, Hello, world.\n という 文字の並びを関数 printf に受け渡すという命令だけです. printf の実体は, ライブラリとしてコンピュータの次にファイルに入っています.
/usr/lib/libc.a (/usr/lib/libc.so.1)
ldは, 2-1.c のコンパイルしてできた結果と 上のファイルにある printf を結び付けて(リンクするという), さらにシステムが, 実行時に要求する情報をつけて 実行可能ファイルを作り上げます.

Library
プログラムを組むと分かりますが, 画面の入出力などは どのプログラムでも同じ様な事をします. これをいちいちプログラム するのは, 無駄です. そこで, よく使う処理はあらかじめ機械語 のものを作成し, まとめたのが必ずあります. これがライブラリ(library)です. ライブラリは, compiler(実は, リンカ)に指示することによって, 自分のプログラムにくっつけることが出来ます. また, C言語では標準ライブラリというのが ANSI により 定義されており, 多くの処理はこれを利用します.

ファイル名
C 言語のプログラミングにおいてファイル名は, 次の規則にしたがって, 名前をつけます.

  1. *.c C 言語のプログラムを記述したファイル.
  2. *.h ヘッダ(header)ファイル. 定数とか関数の定義を記述する.
  3. *.s assembly 言語のプログラムを記述したファイル.
  4. *.o オブジェクト(object)ファイル. 2 進法で記述した機械語が入っている.
  5. a.out 特別なオプションを指定せずにコンパイルしたときに出来る 実行可能ファイル.
上のファイルのうちいくつかは, 2-1.c をコンパイルするときには 現われませんでしたが, それは単に目に見えないだけで, コンピュータの内部では ちゃんと作られています.



Next: 変数の宣言, 整数の演算 Up: 計算機言語 I 第2回 はじめての Previous: Hello, world. プログラムの説明