akyboxブログ

旧AkiIroブログ

Windowsでpthread

Windowsでpthreadのコンパイル

Windowsに環境をpthreadをコンパイルする環境を構築した際のメモ書きです.
参考にさせていただいたサイト様はこちら
【VC++】スレッド(pThread)を利用する環境を整える
私はVC++のようなIDEではなく,エディタとgccで行いましたが,基本は同じです.

pthread.h等々をダウンロード

Windowsにはpthreadのライブラリが標準で入っていません.
なのでこちらのリンクからライブラリ類をダウンロードし,インクルードパスにおいてあげることが必要です.
pthread win32

  • includeの下に置くもの
    • pthread.h
    • sched.h
    • semaphore.h
  • libの下に置くもの
    • libpthreadGC2.a
    • libpthreadGCE2.a
    • pthreadVC2.lib
    • pthreadVCE2.lib
    • pthreadVSE2.lib
  • binの下に置くもの
    • pthreadGC2.dll
    • pthreadGCE2.dll
    • pthreadVC2.dll
    • pthreadVCE2.dll
    • pthreadVSE2.dll

ボールドの部分は参考サイトにはありませんでしたが,私の環境では入れないとライブラリがなくコンパイルがうまくいきませんでした.

ちなみにインクルードパス諸々は次のコマンドで調べられます.

gcc -print-search-dirs

‘timespec’: ‘struct’ type redefinitionを解決する

windowsのtime.hには,既にtimespecが定義されていて,
pthread.hのインクルードガードはこれに対応していません.
したがって手っ取り早いのは,

#define HAVE_STRUCT_TIMESPEC
#include <pthread.h>

こうしてしまうことです.

後はコンパイルするだけです.

gcc -o thread thread.c -lpthreadGC2