1

私はflexを使用しようとしていて、c:\gnuwin32\binにインストールしました.PATHとc:\dev-cpp\binにそのようなものを追加しました.

gcc の呼び出しは問題なく動作しますが、flex の呼び出しは、c:\gnuwin32\bin ディレクトリにいる場合を除き機能しません。つまり、gcc に lex.yy.c でコンパイルするように要求すると、外部の lex 関数が見つからないため失敗します。 yywrap() のように。

これが私のパスが現在最後の2つのアイテムまたは問題のアイテムです。最後のパス項目はセミコロンで終了する必要がありますか? それ以外の場合はなぜ機能しないのか途方に暮れています..

エコーパス

4

1 に答える 1

1

あなたの問題は PATH 連結とは関係ありません。

Gcc はリンク時に flex ランタイム ライブラリを見つけられません。-L オプションを追加してその場所を指定し、libfl.a を追加する必要があります。

何かのようなもの

gcc -o target *.o -L <path> -lfl 

次の flex オプションを使用して yywrap 機能を無効にすることもできます

 %option noyywrap

Flex マニュアルの FAQ エントリを参照してください。

于 2012-07-05T12:23:43.733 に答える