2011-07-17 13 views
8

Macportを使用してブーストをインストールしました。ファイルには、私のメイクはもはや働いていないと私は次のエラー-lboost_systemのライブラリが見つかりません

Undefined symbols: 
"boost::system::generic_category()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in client.o 
    __static_initialization_and_destruction_0(int, int)in client.o 
"boost::system::system_category()", referenced from: 
    boost::asio::error::get_system_category() in client.o 
    boost::system::error_code::error_code()in client.o 
    __static_initialization_and_destruction_0(int, int)in client.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 
make: *** [client] Error 1 

学校で解決策を引数として-lboost_system使用していた取得は/ opt /ローカル/含める/ブースト/

にあるように見えますg ++に、しかし私は私のMacにプロジェクトの家を取ったので、これは動作しません。私はこれが主に学校でブーストファイルがusr/local/lib(またはどこかに似ている)にあるという事実によると思います。

私は-lboost_system引数を追加すると、私は次のようなメッセージ

g++ -I/opt/local/include -lboost_system -o client client.o Packet.o 
ld: library not found for -lboost_system 
collect2: ld returned 1 exit status 
make: *** [client] Error 1 

を取得し、私はいくつかの-Lを使用してバリエーションと-lを試してみたが、私は働くコンボを見つけるように見えることはできません。学校では、私も-Lを使う必要はありません。私はここで同様の問題についていくつかの記事を読んだことがありますが、私にとってはうまく動作しない-lフラグを追加することで修正しました。

ヘルプ!ありがとう!

答えて

12

-L/opt/local/libがありません。あなたのMakefileでLDFLAGSを設定することができるはずです。

LDFLAGS=-L/opt/local/lib 

これは、Boostライブラリはもちろんの/opt/local/libにあることを前提としています。

あなたは、あなたの最終規則で直接-L/opt/local/libを追加し、あなたのMakefileの通常のCXXFLAGSLDFLAGS変数を使用していない場合:

client: client.o Packet.o 
    g++ -L/opt/local/lib -o client client.o Packet.o -lboost_system 

-Iが唯一のヘッダファイルがあり、コンパイラ、リンカに指示しますライブラリが必要で、そのために-Lを使用します。

+0

あなたはそれを見ますか?/opt/local/libにあるすべてのファイルがあります。これがうまくいくようにしましょう – jim

+0

それは働いた!本当にありがとう。私は学ぶべきことがたくさんある。 – jim

+1

@jimあなたは少なくとも1つのことを学ぶ必要があります。正しい場合は答えを受け入れる必要があります。この共同Q&Aシステムの仕組みです。 – GrafikRobot

1

あなたはこのようなあなたのシステムでそれを探すために試みることができる:ライブラリがインストールされている

/sbin/ldconfig -p | grep boost_system | cut -d\> -f2 

場合、それはこのような何か表示される必要があります。

/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 

をか、それだけで表示されます空白行

あなたのケースでは、別の場所に追加機能がインストールされているようですので、追加のリンカー情報が必要なので、-Lスイッチが必要です/ usr/libにあるので、私はmakefileに追加情報が必要ないので、

関連する問題