flex,bison 으로 컴파일시
글쓴이: 익명 사용자 / 작성시간: 금, 2002/05/31 - 11:30오전
flex,bison으로 C화일을 성성후 gcc로 컴파일 하면 다음과 같은 에러가 나
는데 어떻게 해야하지요
유닉스 환경에서는 -ll -ly 로 컴파일 하면 됐는데
gnu 환경에서는 -lfl 다음에 어떤 라이브러리를 링크 시켜야 할까요?
-ly는 안되더군요
/cygdrive/c/DOCUME~1/Vaio/LOCALS~1/Temp/ccCUkRWb.o
(.text+0x8bd)y.tab.c undefin
ed reference to `yyerror'
/cygdrive/c/DOCUME~1/Vaio/LOCALS~1/Temp/ccCUkRWb.o
(.text+0x9c5)y.tab.c undefin
ed reference to `yyerror'
collect2 ld returned 1 exit status
Forums:
Re: flex,bison 으로 컴파일시
flex 를 컴파일 할때는 옵션이 -lfl 입니다.
그리고 bison 은 그냥 컴파일 하시면 됩니다. -_-;;;
옵션 필요없습니다.
그럼 고운 하루되시길...
ps. 기억이 가물가물해서 대충 적었는데, 틀리면... ^^ 죄송...
Re^2: flex,bison 으로 컴파일시
bison 컴파일시 아무 옵션도 지정하지 않으니까 역시 같은에러가 뜨던데..
저도 벌써 3일째 헤매이고 있습니다.
bison 컴파일시 gcc에서 어떤 library를 link시켜야 하죠?
어느 분은 멀 include 시켜서 해결하라고 하던데, 이것도 무슨 소리인지
도 모르겠고....
먼가 속 시원한 해결책이 없을까요?
말씀하신데로 하면 안되는데요?
bison화일은 그냥컴파일 하면되는데 이를 gcc로 lex와 같이 컴파일 하면
에러가 납니다...
계속 못찾고 있는데 아시는 분안계신가요?
Re: 해결책입니다. (미봉책이라고 하죠...^^)
님과 같은 문제로 3일동안 고민하다가 드뎌 쇼부봤습니다.
님도 windows상에서 cygwin 쓰고 계시죠?
이곳에는 liby.a 가 없어서 bison으로 만든 c파일을 컴파일하기가 쉽지 않
더군요..( flex는 libfl.a 가 있는데....)
약간 귀찮은 방법이긴 하지만 해결책을 알아내 올립니다.
방법은 yacc원본파알 (xxx.y)에 yyerror함수를 기술하는 것입니다.
우선 yacc의 맨위의 선언부에 stdio.h를 include합니다.
%{ #include %}
이런식으로 말이죠...
그리고 yacc의 3번째 부분, 즉 c함수를 기술하는 부분에 다음과 같이 넣습
니다.
%%
main()
{
yyparse();
}
yyerror(s)
char *s;
{
printf(stderr, "%s\n", s);
}
이런식으로 yyerror함수를 직접 기술해주면 library를 링크할 필요없이 컴
파일 작업이 가능하더군요.
컴파일러 공부하시는것 같은데, 혹시 하다가 더 좋은 방법있으면 알려주세
요~~~ ..^^;
Re^2: 고맙습니다..^^ (냉무)
..
댓글 달기