0

Mac OS X に makefile があり、最終的なコンパイルの最後のコマンド ラインは次のとおりです。

gcc  count_words.o lexer.o -lfl -o count_words

しかし、それは応答します:

ld: library not found for -lfl
collect2: ld returned 1 exit status

ライブラリ libfl.a が /opt/local/lib/ にあり、コマンドラインを次のように変更することがわかりました。

gcc count_words.o lexer.o -L/opt/local/lib/ -lfl -o count_words

それは完全に機能しますが、フォーム -l の前提条件が見られるとき、GNU make search for file for libNAME.so; を読んだことがあります。一致するものが見つからない場合は、libNAME.a を検索します。ここで、make は /opt/local/lib/libfl.a を見つけ、最終的なアクションであるリンクに進む必要がありますが、これは行われていません。

LD_LIBRARY_PATH を使用してみましたが、Mac で作業しているため DYLD_LIBRARY_PATH を使用する必要があることに気付き、/opt/local/lib を指す変数をエクスポートして、makefile を再度実行しようとしましたが、機能しませんでした。エクスポートされた DYLD_FALLBACK_LIBRARY_PATH という別の環境変数が見つかりましたが、機能しませんでした。

私は何をすべきか?

4

3 に答える 3

0

おそらく、この質問Library not found for -lflが関連しています。-lfl の代わりに -ll を試すと、何らかの理由で OS X で動作します。http://linux-digest.blogspot.hk/2013/01/using-flex-on-os-x.htmlも参照してください。

于 2014-10-15T17:27:00.197 に答える
0

makeライブラリをまったく検索しません。 makeそれを行う他のツールを呼び出すだけです。(ldによって呼び出されるgcc) する必要があるのは、gccfromに適切なフラグを渡すことだけですmake。おそらく、これは単に追加することを意味します

LDFLAGS=-L/opt/local/lib

Makefileに追加します(または、テスト中に行ったようにコマンドを直接編集します)が、Makefileを見ずに判断するのは困難です。

于 2013-10-09T23:43:28.957 に答える