gcc4.4のthreadがコンパイルできない


Windows版だけかもしれませんが、C++0xヘッダは以下の定義が入っていてclass threadが使えなかったです。

#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)

これらはで定義されてます。

/* Define if gthreads library is available. */
/* #undef _GLIBCXX_HAS_GTHREADS */

/* Define if C99 types in should be imported in in
namespace std::tr1. */
#define _GLIBCXX_USE_C99_STDINT_TR1 1

_GLIBCXX_HAS_GTHREADSが伏せられてますね。。。自分で定義して

_GLIBCXX_HAS_GTHREADS
#include

と書くと、の以下のものが足りないと怒られました。orz

#include
#include

typedef pthread_t __gthread_t;
typedef pthread_key_t __gthread_key_t;
typedef pthread_once_t __gthread_once_t;
typedef pthread_mutex_t __gthread_mutex_t;
typedef pthread_mutex_t __gthread_recursive_mutex_t;
typedef pthread_cond_t __gthread_cond_t;
typedef struct timespec __gthread_time_t;

とりあえず付けても怒られなかったオプション付けられるだけ付けてコンパイルしてみた。

gcc -Wall -std=gnu++0x -mwindows -mno-cygwin -lpthread-win32 -o thread.exe thread_sample.cpp -libstdc++

なんかものすごく間違ったことしてるんだろうか(^-^;