gccに、オプション -c を指定することによって、オブジェクトファイルだけ生成していくことを考えます。前頁のコンパイル例:その1で、sgetline.c と scopy.c のオブジェクトファイルを生成し、その後、main.cをコンパイル、リンクするには以下のようにビルドしていきます。
上記の手順は、分割したプログラムのソースファイルが増えても、修正されていないソースファイルに対する無駄なコンパイルをしなくて済みます。(コンパイル例:その2) %gcc -c sgetline.c %gcc -c scopy.c %gcc -o maxline main.c sgetline.o scopy.o
しかし、ソースファイルの追加や削除、ファイル名の変更、関連するヘッダファイルとの依存関係など、対象となるファイル群に変更が加えられた時、その全てを手作業でサポートすることが、非常に煩雑になります。
この問題を解決するのが、以下に述べるmake(および指示ファイル Makefile)です。