C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

C++11 <thread> GCC 4.6.2 は -pthread 付けないとダメよ

GCC4.6.2ではC++11のが凡そサポート済みという事になっている。ところが簡単なテストコードを書いてビルドしてみると std::system_error 例外がスローされる。whatには"Operation not permitted"。

実はビルドする際に -std=c++0x の他に -pthread を付けないとGCC4.6.2ではを用いたプログラムは転けてしまうという落ち。

せっかくのC++11標準機能となったを使うのにも処理系に依存したオプションをくっつけるの、なんだか嫌だにゃー・・・(´・ω・`)

ちなみに、StackOverflow に以下のような話題があった。

C++0x thread static linking problem
http://stackoverflow.com/questions/7090623/c0x-thread-static-linking-problem

どうやら static-link する際はビルド時に付けるオプションだけではうまい事行かないので、リンクすべき libstdc++.a をカレントディレクトリにシンボリックリンクして置いて、ビルド時にそれをリンクする様に手動設定もしないとリンクされずに std::system_error が飛ぶよー、という事らしい。4.6.2で試してみたところ同様でした。

さてさて、それはそうと、GCC4.7でも -pthread って付けなくちゃならないのかなぁ・・・。なんか嫌だにゃー・x・