dポイントプレゼントキャンペーン実施中!

こんにちは。
現在boost::filesystemについて勉強しているのですが、サンプルプログラムを用いてコンパイルをしようとするとエラーが発生します。
OSは、Mac OS Xで、boostは1.46.1です。
インストール(bjamなど)は、完了しているはずです(できてなかったらごめんなさい)
g++ test.cpp
でコンパイルしようとすると以下のエラーメッセージが表示されます。

Undefined symbols:
"boost::system::generic_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccv6DmNs.o
__static_initialization_and_destruction_0(int, int)in ccv6DmNs.o
"boost::system::system_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccv6DmNs.o
"boost::filesystem3::detail::file_size(boost::filesystem3::path const&, boost::system::error_code*)", referenced from:
boost::filesystem3::file_size(boost::filesystem3::path const&)in ccv6DmNs.o
"boost::filesystem3::path::wchar_t_codecvt_facet()", referenced from:
boost::filesystem3::path::codecvt() in ccv6DmNs.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

また、上記のエラーの一部を検索をかけて調べたところ
g++ -lboost_system-mt -lboost_filesystem-mt test.cpp
とコンパイルすればできると書かれていたのですが、
ld: library not found for -lboost_system-mt
collect2: ld returned 1 exit status
と表示されて、コンパイルできませんでした。

どうすればいいのかわからないので、教えて下さい。
よろしくお願いします。

A 回答 (1件)

boostは、どんな方法でどこにインストールしましたか?



-lboost_system-mt は libboost_system-mt.a をリンクしようとします。インストールしたディレクトリの下の方に libboost_system-mt.a があるのではないでしょうか。そのディレクトリを-Lで指定するようにするとどうでしょうか。

この回答への補足

回答ありがとうございます。
boostは、boostのHPからダウンロードし、それを
./bootstrap.sh
./bjam
を実行しました。
場所は、boostという名のフォルダを作成して、その中に入れました。

確認したところ、libboost_system.aというのがありました。
ディレクトリを-Lで指定する方法も教えていただけるとありがたいです。
お手数ですが、よろしくおねがいします。

補足日時:2011/07/17 17:59
    • good
    • 0
この回答へのお礼

いろいろありがとうございました。
いくつか試してみたところ、libboost_system.aというのが存在し、mtというのがなかったので
コンパイル時にも、mtを省いたらコンパイルすることが出来ました。
本当にありがとうございました!

お礼日時:2011/07/17 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!