OSX Mountain Lion を使用しています。ブースト Web サイト ( http://www.boost.org/doc/libs/1_52_0/more/getting_started/unix-variants.html ) から提供された手順を使用して、ブースト 1.52.0 をダウンロードし、解凍し、ビルドしました。デフォルトのインストール プレフィックスを のままにしました。/usr/local
これは、ライブラリが にインストールされ/usr/local/lib
、ヘッダー ファイルが にあることを意味します/usr/local/include
。ライブラリとヘッダーがそこに存在し、最近変更されたことを確認しました。
ここにあるブースト非同期 I/O の例をコンパイルしようとしています: http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/tutorial/tuttimer5/src.html (ソース)。
これが私のコンパイルコマンドです:
g++ -Wall -c -g -I/usr/local/include src/test1.cpp -o src/test1.o
ここで、src/test1.cpp はサンプル ソース ファイルです。これが私のリンクコマンド(およびエラー)です:
g++ -Wall -L/usr/local/lib -lboost_thread -lboost_system src/test1.o -o bin/test1
Undefined symbols for architecture x86_64:
"boost::thread::~thread()", referenced from:
_main in test1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Apple の clang++ 4.0 と g++ 4.6.0 の両方を使用してみました。両方のプログラムから同じ未定義シンボル エラーが発生します。
他の人も、このコード サンプルのコンパイルに問題を抱えているようです。私はこの質問を認識しています: C++ / Boost: Undefined Symbols in example? そしてこれ:boost.asioの例をコンパイルするときのリンカエラー。ただし、これらの問題はそれぞれ、適切なスイッチ (-lboost_thread および -lboost_system) をコマンド ラインに追加することで修正されたようです。私はすでにそれらを持っています。-lpthread を追加しようとしましたが、うまくいきませんでした。
私の質問を見てくれてありがとう!どんな助けでも大歓迎です。:)