当前位置: 技术问答>linux和unix
makefile 一个小问, 第一次用
来源: 互联网 发布时间:2016-01-17
本文导语: 先贴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.t...
先贴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呢?
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
这里是tab不是空格 gcc -c -g orgSrcList.c
|
make: *** No rule to make target `orgSrcList.c', needed by `orgSrcList.o'. Stop
或者是找不到那个文件,或者是无法编译(格式问题,就是楼上说的),lz可以单独进行编译试试,到底是什么问题
或者是找不到那个文件,或者是无法编译(格式问题,就是楼上说的),lz可以单独进行编译试试,到底是什么问题