編譯時,makefile如下:
CFLAGS= -g
INCS=
# use the following line to "Purify" the code
#CC=purify gcc
CC=gcc
SRCS=baum.c viterbi.c forward.c backward.c hmmutils.c sequence.c /
genseq.c nrutil.c testvit.c esthmm.c hmmrand.c testfor.c
all : genseq testvit testfor esthmm
genseq: genseq.o sequence.o nrutil.o hmmutils.o hmmrand.o
$(CC) -o genseq genseq.o sequence.o nrutil.o /
hmmrand.o hmmutils.o -lm
testvit: testvit.o viterbi.o nrutil.o hmmutils.o sequence.o
$(CC) -o testvit testvit.o viterbi.o nrutil.o sequence.o /
hmmutils.o hmmrand.o -lm
testfor: testfor.o forward.o nrutil.o hmmutils.o sequence.o hmmrand.o
$(CC) -o testfor testfor.o forward.o nrutil.o sequence.o /
hmmutils.o hmmrand.o -lm
esthmm: esthmm.o baum.o nrutil.o hmmutils.o sequence.o /
forward.o backward.o hmmrand.o
$(CC) -o esthmm esthmm.o baum.o nrutil.o sequence.o hmmutils.o /
forward.o backward.o hmmrand.o -lm
clean:
rm *.o a.out
cygwin下編譯,出現錯誤:
make: 'all' is up to date
聯想到all下應該都是些.exe文件,作下修改,其餘不變。修改如下:
all : genseq.exe testvit.exe testfor.exe esthmm.exe
genseq.exe: genseq.o sequence.o nrutil.o hmmutils.o hmmrand.o
$(CC) -o genseq genseq.o sequence.o nrutil.o /
hmmrand.o hmmutils.o -lm
testvit.exe: testvit.o viterbi.o nrutil.o hmmutils.o sequence.o
$(CC) -o testvit testvit.o viterbi.o nrutil.o sequence.o /
hmmutils.o hmmrand.o -lm
testfor.exe: testfor.o forward.o nrutil.o hmmutils.o sequence.o hmmrand.o
$(CC) -o testfor testfor.o forward.o nrutil.o sequence.o /
hmmutils.o hmmrand.o -lm
esthmm.exe: esthmm.o baum.o nrutil.o hmmutils.o sequence.o /
forward.o backward.o hmmrand.o
$(CC) -o esthmm esthmm.o baum.o nrutil.o sequence.o hmmutils.o /
forward.o backward.o hmmrand.o -lm
編譯完成完成,makefile的東西還有待學習。後面再
'all' is up to date 提示沒有更新,把原來的.o,.exe文件刪除,重新編譯就OK了。