2013-05-07 39 views
0

Toni Guttman给出了一个给定的r-tree代码(它已被修改用于我的作业),但是,如果更改参数(节点的尺寸),然后在“制造”会导致这样的错误:make file:找不到yacc命令,安装bison后出现[y.tab.c]错误127

yacc y.spec 
make: yacc:command not found 
make: *** [y.tab.c] error 127 

我已经安装了野牛和柔性,而“这YACC”显示,

alias yacc='bison' 
/usr/bin/bison 

我应该怎么办解决问题?

这里是 “生成文件”:

# %W% %G% 
# use flag -O for optimized code, slower compile 
FLAGS= 

SRC= main.c index.c newtid.c node.c rectangle.c \ 
    printstats.c clock.c y.spec allocate.c error.c\ 
    split.l.c \ 
    split.q.c \ 
    split.e.c 

HEADERS= options.h macros.h index.h assert.h 

ALL= $(SRC) $(HEADERS) split.l.h split.q.h split.e.h 

OBJ= main.o index.o newtid.o node.o rectangle.o \ 
    printstats.o clock.o y.tab.o allocate.o error.o 

OBJLIN= split.l.o 
OBJQ= split.q.o 
OBJEXP= split.e.o 

$(OBJ): $(HEADERS) 
$(OBJLIN): $(HEADERS) split.l.h 
$(OBJQ): $(HEADERS) split.q.h 
$(OBJEXP): $(HEADERS) split.e.h 

# assembler chokes if graphics.c is compiled with -g option, do it without. 
# graphics.o: graphics.c $(HEADERS) 
# cc -c graphics.c 

# assembler chokes if y.tab.c is compiled with -g option, do it without. 
# y.tab.o: y.tab.c $(HEADERS) 
# cc -c y.tab.c 

.c.o: $(HEADERS) 
    cc -c $(FLAGS) $*.c 

linear: $(OBJ) $(OBJLIN) 
    cc $(FLAGS) $(OBJ) $(OBJLIN) -lm -o linear 

quad: $(OBJ) $(OBJQ) 
    cc $(FLAGS) $(OBJ) $(OBJQ) -lm -o quad 

exp: $(OBJ) $(OBJEXP) 
    cc $(FLAGS) $(OBJ) $(OBJEXP) -lm -o exp 

y.tab.c: y.spec $(HEADERS) 
    yacc y.spec 

edit: 
    sccs edit $(SRC) $(HEADERS) split.l.h split.q.h split.o.h 

unedit: 
    sccs unedit $(ALL) 
    rm -f tags 

delta: 
    sccs delta $(ALL) 
    rm -f tags 

get: 
    sccs get $(ALL) 

clean: 
    rm -f *.o core y.tab.c tags 

tags: $(SRC) 
    ctags *.c 

lint: 
    rm -f lint.out 
    lint *.c > lint.out 
+0

请参阅此解决方案: [添加别名来解决它] [1] [ 1]:http://stackoverflow.com/questions/10733238/make-yacc-command-not-found-after-installing-bison – winningsix 2014-10-21 02:35:14

回答

2

您没有安装yacc,如您所见。在shell中更改别名将无济于事,因为它试图运行yacc命令,而不是shell。你必须编辑生成文件,并添加一行:

YACC = bison -y 

(在-y标志使野牛的行为很像YACC)

既然你没有表现出实际的makefile文件,我们不能肯定这会做到,但很可能。

编辑:

我你上面的makefile,参考更改为yaccbison -y代替。

你的makefile没有遵循许多最佳实践,但那是另一天。

+0

我对“Makefile”一无所知...... TT – user2358561 2013-05-08 05:24:04