2011-07-08 2 views
2

g ++でコンパイルされたプロジェクトでboostヘッダを使用しています。ブーストソースをダウンロードしてビルドしていないので、リンクするlibファイルはありません。ブーストヘッダーを見つける方法はヘッダーのみとして使うことができますか?

私はブースト・ウェブサイト(http://www.boost.org/doc/libs/1_40_0/)を読むと、Boost.Threadには対応するライブラリが必要ですが、私はうれしく(boost :: mutex)ヘッダーを使用していますスレッドライブラリを強化するためのリンク。

私の質問は、特定のブーストヘッダーファイルを使用するための対応するライブラリをリンクする必要があるかどうかを本当にどのように伝えるかです。

+5

未解決のシンボルがあるかどうかをコンパイルしてリンクし、確認してください。 – robert

答えて

1

ブーストのマニュアルには、特定のライブラリがヘッダーのみであるかどうかが記載されています。ヘッダーのみが指定されておらず、対応するライブラリとリンクしていないライブラリを使用している場合は、未定義の動作です。実際に働く(またはうまくいくと思われる)という事実は、実際には関係がありません。ターミナルで

+2

リスクは何ですか? IMHOもしそれがOKをリンクするなら... libboost_threadはlibcの関数や何かを(それは_evil_となる)オーバーライドすると仮定しているから恥ずかしがります。どうすればそれが失敗するか '未定義である'と思いません。ポータブルではなく、サポートされているということでしょうか? – sehe

+0

リスクは何ですか?知るか?ライブラリ作成者は、ライブラリを使用するためにXを実行しなければならず、Xを実行しないと言うと、ライブラリ作成者はすべての保証から免除されます。起こったことは何でも起こります:定義されていません。 –

+2

私はあなたが_standards specification_でドキュメントを間違っていると思います。単なる図書館です。それはちょうどコードです。それはコンパイラやリンカを変更しないので、我々はそれについて考えることができます:) – sehe

3

./bootstrap.sh --show-libraries 

出力は特別なビルドやインストールを必要とするライブラリのリストが表示されます。

関連する問題