0

当我在以下 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
4

1 回答 1

2

make不构建符号表(显然它调用的编译器和链接器必须这样做!)。我假设您指的是生成的calcu二进制文件在其输入中所做的任何事情。

如果任何诸如“符号表”之类的东西是由 构建的calcu,那将是由您插入的代码parser.y移到yacc.tab.c; 至于何时,它将在calcu运行过程中无论其输入是什么——增量,因为包括“符号表构建代码”在内的每个语法产生都匹配。

于 2009-11-16T07:10:17.077 回答