next up previous contents
Next: この文書について... Up: 実験に役立つテクニック集    V1.2 Previous: 10 速い計算をするためのヒント

11 make を使おう

プログラムを開発しているときは、完成までに何回もコンパイルをする必要 がある。プログラムが大きな場合、コンパイルに時間がかかる。そこで、プロ グラムを分割して記述し、各々機械語にコンパイルしておいて、最後に全体を リンクするという分割コンパイルが行われる。

例えば、GLSC を使った、myprog.c, sub1.c, sub2.c を コンパイルしてリンクするには、

oyabun% cc -O -c myprog.c

oyabun% cc -O -c sub1.c
oyabun% cc -O -c sub2.c
oyabun% cc -O -o myprog myprog.o sub1.o sub2.o-lglscd -lX11 -lm

とする。ここで sub1.c に修正を施した場合は、

oyabun% cc -O -c sub1.c

oyabun% cc -O -o myprog myprog.o sub1.o sub2.o-lglscd -lX11 -lm

とする。

こういうのを自動化するのが、make である。これは、一連の手順 を
簡単な Makefile
myprog: myprog.o sub1.o sub2.o
        cc -O -o myprog myprog.o sub1.o sub2.o -lglscd -lX11 -lm
myprog.o: myprog.c
        cc -O -c myprog.c
sub1.o: sub1.c
        cc -O -c sub1.c
sub2.o: sub2.c
        cc -O -c sub2.c

のようなファイルに書いておけば、後は

oyabun% make

とするだけで、make が必要なことをしてくれる。

make には、色々な仕掛けがあり、例えば私なら
少し工夫した Makefile
CC      =       cc
CFLAGS  =       -O
OBJS    =       myprog.o sub1.o sub2.o
default: myprog
myprog: $(OBJS)
        $(CC) $(CFLAGS) -o $@ $(OBJS) -lglscd -lX11 -lm
myprog.o: myprog.c
sub1.o: sub1.c
sub2.o: sub2.c

clean:
        rm -f $(OBJS)

のように書く。


next up previous contents
Next: この文書について... Up: 実験に役立つテクニック集    V1.2 Previous: 10 速い計算をするためのヒント
桂田 祐史
2014-05-27