web-dev-qa-db-ja.com

/ usr / bin / ld:-lflが見つかりません

次のコマンドを実行した後:

g++ Lex.yy.c -lfl

次のエラーが発生します。

/usr/bin/ld: cannot find -lfl

どうすれば解決できますか?

8
NPK

Lex.yy.cは、C(およびC++)の字句解析プリプロセッサーである Lex のデフォルトの出力ファイル名です。 linkerld)は、libfl.soというファイルを探しています(動的にリンクしている場合、静的にリンクしている場合はlibfl.aになります)。これは、Lexの実装である Flex によって生成されるレクサーに必要なランタイムライブラリです。

flexを使用してLex.yy.cを自分で生成した場合は、Flexが正しくインストールされていることを確認してください。パスにflex実行可能ファイルを含めることに加えて、ライブラリ検索パス(通常、libfl.soまたはlibfl.alibfl_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パッケージをインストールするとうまくいきました。

3
atineoSE