コンパイルをするのに毎回
cc -o test2 test2.c -I/opt/X11R5/include -L/opt/X11R5/lib -R/opt/X11R5/lib -lXtc -lX11 -lsocket -lnsl -lm
と打つのはめんどうですね。特に、プログラムが大規模になり、複数のファイルにまたがるようになると、非常に開発効率が下がります。
Makefileをいうものを使うと、毎回複雑なコマンドを打つ代わりに、make
と打つ だけでコンパイルができるようになります。Makefileは普通のテキストファイルで、 以下に示すようにコンパイルのルールを記述します。
#
# Makefileのサンプル
# '#'の後はコメントとして無視されます
#
CC = cc # コンパイルのコマンド(コンパイラを指定)
INCFLAGS = -I/opt/X11R5/include # インクルードパスの指定
LDFLAGS = -L. -L/opt/X11R5/lib -R/opt/X11R5/lib -lXtc -lX11 -lm -lsocket -lnsl
# ライブラリ等の指定
test2: test2.c # test2というプログラムを作るにはtest2.cが必要という意味
$(CC) -o $@ $@.c $(INCFLAGS) $(LDFLAGS) # test2.cからtest2を作るコマンド
#↑【この空白はTABにして下さい】
このファイルを作っておけば、ただ"make"と打つだけで test2.c をコンパイルして test2 ができます。