makefile 一个小问, 第一次用
先贴makefile文件, 下面跟问题:
CFLAGS = -Wall
CFLAGS+= -g
#CFLAGS+= -Dcplusplus
#CFLAGS+= -D_UNIX_
CSRC_EXCLUDE= y.tab.c
LEX = flex
YACC = byacc
#LDLIBS= -ly -ll -lm
LDLIBS= -ly -lm
GCC = gcc
CC = $(GCC) $(CFLAGS)
all: masm
masm: lex.yy.o y.tab.o asmutil.o srcList.o symbols.o loclab.o instr_handler.o bit_instr.o memory.o orgSrcList.o
$(CC) -o masm lex.yy.o y.tab.o asmutil.o srcList.o symbols.o loclab.o instr_handler.o bit_instr.o orgSrcList.o memory.o $(LDLIBS)
lex.yy.o: asm.l.c asm.h y.tab.h bit_instr.h instr_handler.h
$(LEX) -v asm.l.c
$(CC) -c lex.yy.c
y.tab.c y.tab.h: asm.y.c asm.h asmutil.h srcList.o symbols.o
$(YACC) -v -d asm.y.c
y.tab.o: y.tab.c y.tab.h asm.h asmutil.h memory.o
$(CC) -c y.tab.c
bit_instr.o: bit_instr.c asm.h masm.h
$(CC) -c bit_instr.c
instr_handler.o: instr_handler.c instr_handler.h asm.h masm.h
$(CC) -c instr_handler.c
srcList.o: srcList.c srcList.h asm.h asmutil.h
$(CC) -c srcList.c
orgSrcList.o: orgSrcList.c orgSrcList.h asm.h asmutil.h
gcc -c -g orgSrcList.c
symbols.o: symbols.c symbols.h asm.h asmutil.h
gcc -c -g symbols.c
asmutil.o: asmutil.c asmutil.h asm.h
gcc -c -g asmutil.c
memory.o: memory.c memory.h masm.h asm.h
gcc -c -g memory.c
loclab.o: loclab.c loclab.h
gcc -c -g loclab.c
main.o: main.c symbols.h
gcc -c -g main.c
testme: symbols.o symbols.h main.o
gcc -o testme -g main.o symbols.o
clean::
rm -f *.o
rm -f *.err *.asl *.crop *.data *.dat *.sap
rm -f y.output y.tab.c lex.yy.c y.tab.h
rm -f *.exe *.stackdump *.bak
上面的文件中:
orgSrcList.o: orgSrcList.c orgSrcList.h asm.h asmutil.h
gcc -c -g orgSrcList.c
是我后来添加的,运行的时候提示错误:
make: *** No rule to make target `orgSrcList.c ', needed by `orgSrcList.o '. Stop
.
我就是按照其他几个rule写的,怎么会norule呢?
------解决方案--------------------orgSrcList.o: orgSrcList.c orgSrcList.h asm.h asmutil.h
这里是tab不是空格 gcc -c -g orgSrcList.c
------解决方案--------------------make: *** No rule to make target `orgSrcList.c ', needed by `orgSrcList.o '. Stop
或者是找