yacc로 생성된 c source를 compile시 에러
글쓴이: thisrule / 작성시간: 금, 2005/09/09 - 4:29오후
lex와 yacc를 공부하기 위해 인터넷 사이트에서 올려진 강좌를 따라하고 있습니다.
그런데 컴파일이 안됩니다.
y_calc.y가 있고, y_calc.l이 있습니다.
Quote:
[prompt]% yacc -d y_calc.y
[prompt]% lex y_calc.l
[prompt]% gcc -o calc y.tab.c lex.yy.c -ly -ll
/usr/bin/ld: cannot find -ly
collect2: ld returned 1 exit status
이렇게 되는군요. 즉 liby.a 라는 파일이 없다는 얘기인데 yacc 관련 라이브러리 같습니다.
그래서 이번에 -ly를 빼고 해보았습니다.
Quote:
[prompt]% gcc -o calc y.tab.c lex.yy.c -ll
gcc -o y_calc y.tab.c lex.yy.c -ll
/tmp/ccEqTYm5.o(.text+0x30a): In function `yyparse':
: undefined reference to `yyerror'
/tmp/ccEqTYm5.o(.text+0x5e9): In function `yyparse':
: undefined reference to `yyerror'
collect2: ld returned 1 exit status
결론적으로 yacc 관련 라이브러리가 필요하단 말이 됩니다.
yacc관련 rpm 설치정보에 원래 저 파일이 없습니다.
그래서 따로 파일을 구해보려는데 그것도 만만치 않네요.
전 레드햇9.0을 사용하는데 원래 저 파일이 없는건지...
즉, yacc로 생성된 c source를 gcc로 컴파일 하려는데 yacc 관련 라이브러리를 알수가 없어 컴파일이 되질 않습니다.
아시는 분들, 도와 주세요.
Forums:
Linux에서 사용되는 yacc의 구현은 GNU에서 구현한 bison을
Linux에서 사용되는 yacc의 구현은 GNU에서 구현한 bison을 주로 사용합니다.
redhat계열의 경우 bison과 bison-devel이 나누어져 있어서 bison 프로그램만 깔리고 라이브러리는 안깔려있는 경우가 있더군요. bison-devel을 깔아주시고, -ly를 이용해서 컴파일해 보세요.
yum install bison-devel
yum이 없는 경우에는 알아서 bison과 bison-devel을 찾아다 까시길.
대충 아래와 같은 코딩으로 *.y를 작성하세요.[code:1]..
대충 아래와 같은 코딩으로 *.y를 작성하세요.
댓글 달기