当我在下面的Makefile上运行make时,构建符号表的时间是什么时候,甚至是?
LEX = flex
YACC = yacc
CC = gcc
calcu: y.tab.o lex.yy.o
$(CC) -o calcu y.tab.o lex.yy.o -ly -lfl
y.tab.c y.tab.h: parser.y
$(YACC) -d parser.y
y.tab.o: y.tab.c parser.h
$(CC) -c y.tab.c
lex.yy.o: y.tab.h lex.yy.c
$(CC) -c lex.yy.c
lex.yy.c: calclexer.l parser.h
$(LEX) calclexer.l
clean:
rm *.o
rm *.c
rm calcu
答案 0 :(得分:2)
make
不构建符号表(显然它调用的编译器和链接器必须这样做!)。我假设你指的是由此产生的calcu
二进制文件输入的内容。
如果calcu
构建了“符号表”之类的内容,则会将您插入parser.y
的代码移到yacc.tab.c
;至于何时,它将在calcu
运行过程中,无论其输入是什么 - 逐步地,因为每个语法产生包括“符号表构建代码”匹配。