2012-04-11 15 views
0

私はいくつかのlexとyaccプログラムをコンパイルしようとしています。大学ではFedora Core 4を使用しています。自宅の仮想マシンで同じOSを使用していますが、プログラムをコンパイルできません。以下は、私はこのエラーを解決する助けてくださいLexとYaccプログラムをコンパイルできません

LEXコード

%{ 
#include "y.tab.h" 
%} 
%% 
[ \t]+ {;} 
\n {return;} 
[a-zA-Z][a-zA-Z0-9]* {return ID;} 
[0-9]+ {return NUMBER;} 
. {return yytext[0];} 
%% 

YACCコード

%{ 
#include<stdio.h> 
%} 
%token NUMBER ID 
%left '+' '-' 
%left '*' '/' 
%% 
input:e'+'e 
|e'-'e 
|e'*'e 
|e'/'e 
|'('e')' 
; 
e:NUMBER 
|ID 
; 
%% 
int main() 
{ 
printf("\n\nEnter an expression"); 
yyparse(); 
printf("\n\nValid Expression\n\n"); 
} 
void yyerror() 
{ 
printf("\n\nInvalid Expression\n\n"); 
exit(0); 
} 

While executing the above code, I get the following linker error 

$ lex program_name.l      //executes without error 
$ yacc -d program_name.y     //executes without error 
$ cc lex.yy.c y.tab.c -ll -ly 
/usr/bin/ld: cannot find -ly 
collect2: ld returned 1 exit status 

lexとyaccのコードです。事前のおかげで

答えて

0

これは...あなたは

または多分あなたは適切なlibにインストールする必要があり-L"/some/path/to/lib-directory"オプションでディレクトリを含める必要があります...あなたのyaccのlibに関係しています

1

This conversionは問題を概説しています:libyをインストールする必要があり、適切なライブラリパスを設定する必要があります(-L/usr/libなど)

-lyオプションはリンカーにlibyライブラリとのリンクを指示しますエラーには、それを見つけることができませんそのライブラリ

1

-lyのようなものはありません。 Lexとflexで生成されたスキャナは、実行時サポートライブラリを使用します。 yaccで生成されたパーサは生成しません。 -lyを取り出してもう一度お試しください。

関連する問題