次のコマンドを実行した後:
g++ Lex.yy.c -lfl
次のエラーが発生します。
/usr/bin/ld: cannot find -lfl
どうすれば解決できますか?
Lex.yy.c
は、C(およびC++)の字句解析プリプロセッサーである Lex
のデフォルトの出力ファイル名です。 linker (ld
)は、libfl.so
というファイルを探しています(動的にリンクしている場合、静的にリンクしている場合はlibfl.a
になります)。これは、Lexの実装である Flex によって生成されるレクサーに必要なランタイムライブラリです。
flex
を使用してLex.yy.c
を自分で生成した場合は、Flexが正しくインストールされていることを確認してください。パスにflex
実行可能ファイルを含めることに加えて、ライブラリ検索パス(通常、libfl.so
またはlibfl.a
にlibfl_pic.a
および/usr/lib
(存在する場合は/usr/local/lib
)が必要です。か否か)。 Flexが標準以外の場所にある場合は、-L
でライブラリ検索パスを指定します。
~/software/flex/bin/flex mylexer.l
g++ Lex.yy.c -L ~/software/flex/lib -lfl
SciOsディストリビューションにflex-devel.x86_64
パッケージをインストールするとうまくいきました。