2013-05-07 386 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