なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

pthread.hの使い方など

マルチスレッドオプションを使いたかったのに何度やってもリンクができない…と思ってたのですがやっとできた。

pthread自体はPOSIX Threads (pthreads) for Win32ここのサイトからダウンロードして解凍してメイクしてできたものをそれぞれのフォルダに移動すればOK。

$ make clean GC
$ cp pthread.h /mingw/include/
$ cp sched.h /mingw/include/
$ cp libpthreadGC2.a /mingw/lib/

gccで使うときは下みたいな感じで。

$ gcc sampleforgcc.c -lpthreadGC2 -o pthread

  • lpthreadでずっと試してたからそこでハマった


VC++なら

#ifndef __restrict__
	#define __restrict__
	#define __inline__
	#define __imp__pthread_join
#endif

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

#pragma comment(lib, "libpthreadGC2.a")

みたいな感じでやったらコンパイルできた。泥縄プログラミング。


で、なんでこんなことしてたかというとgettext-0.18のコンパイルにそれが必要だったからなのさ。gettextを-lpthreadオプション無しでメイクしてたらものすごい勢いでコンパイルエラーになる。
止まったところでmake -lpthreadGC2とやると、スルスルっとコンパイルが通ったのでした。

【WindowsでC++がやりにくいとお悩みの方へ】
ここを見ている方!C++を本格的にやるならLinuxです
あなたとDebian、今すぐダウンロー
ド