2013-05-07 1 views
0

Существует точный код дерева Toni Guttman (он был изменен для моей домашней работы), однако, если я изменяю параметр (размер узла), то «сделать» вызовет такие ошибки:make file: команда yacc не найдена и [y.tab.c] ошибка 127 после установки bison

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

Я установлен бизон и прогибается, и «который Yacc» показывает, что

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

что я должен делать решить проблему?

Вот "Makefile":

# %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

ответ

2

Вы не yacc установлен, как вы уже видели. Изменение псевдонима в вашей оболочке не поможет, потому что это делает попытку запустить команду yacc, а не оболочку. Вы должны отредактировать Makefile и добавьте следующую строку:

YACC = bison -y 

(-y флаг делает зубров ведут себя как Yacc)

Поскольку вы не показывают фактическую Makefile мы не можем быть уверены, что это сделает это, но это вероятно.

EDIT:

Я ваш Makefile выше, изменить ссылку на yacc сказать bison -y вместо этого.

Ваш файл makefile не соответствует многим лучшим практикам, но это еще один день.

+0

Я ничего не знаю о «Makefile» ... TT – user2358561

1

вручную добавить этот скрипт/USR/бен/Yacc просто скрипт, содержащий:

#! /bin/sh 
exec '/usr/bin/bison' -y "[email protected]" 
Смежные вопросы