gcc -g -o main.o main.c gcc -g -o sub.o sub.c gcc -g -o func.o func.c gcc -g -o program main.o sub.o func.oこんなことになってきたら、Makeをつかってソースコードの一括管理をしましょう。Makeを使えば、これは、
CC=gcc
CFLAG=-g
OBJGROUP=main.o sub.o func.o
all: program
program: $(OBJGROUP)
(ここはタブです)$(CC) -o program $(OBJGROUP)
clean:
(ここはタブです)\rm *.o
FC=f77 FFLAG=-g OBJGROUP=main.o sub.o func.o all: program program: $(OBJGROUP) (ここはタブです)$(FC) -o program $(OBJGROUP) clean: (ここはタブです)\rm *.o
FC=ifort FLAGS=-g OBJGROUP=main.o inc.o func.o all: program program: $(OBJGROUP) (ここはタブです)$(FC) -o program $(OBJGROUP) clean: (ここはタブです)\rm *.o .SUFFIXES:.f90
ライブラリ(書庫)のリンクは以下のような感じです。
FC=ifort FLAGS=-g OBJGROUP=main.o inc.o func.o LIBDIR=/usc/local/lib/plot all: program program: $(OBJGROUP) (ここはタブです)$(FC) -o program $(OBJGROUP) -L$(LIBDIR) -Vaxlib clean: (ここはタブです)\rm *.o .SUFFIXES:.f90
ある程度、オブジェクトファイルが集まってきたら、それらをまとめて一つのライブラリ(書庫)を作ってしまうのも、プログラムを整理するための一つの手です。
ライブラリを作成するには、arを用いますが、これもMakeで自動化してしまいましょう。Makefileに以下のようにかきます。
FC=g77 LIB=sub1.o sub2.o sub3.o sub4.o OBJGROUP=main.o libsub.o all: libsub.a main libsub.a: $(LIB) (ここはタブです)ar rv libsub.a $(LIB) (ここはタブです)ranlib libsub.a program: $(OBJGROUP) (ここはタブです)$(FC) -o program $(OBJGROUP) clean: (ここはタブです)\rm -rf *.o *.mod
この例では、sub1.o sub2.o sub3.o sub4.o の四つのオブジェクトファイルからlibsub.aというライブライリをつくり、インデックスをつけています。そして、メインのプログラム(program)でlibsub.aを使っています。まあ、単に複数のファイルを一個にまとめているだけですが、このようにまとめておけば、他のプログラムで転用したいときなども分かり易いと思います。