2009年08月05日

Pthreadsのコンパイル&インストール (autostatic版)

Pthreadsは、以下の場所にあります。
http://sourceware.org/pthreads-win32/

正式リリースは、pthreads-w32-2-8-0-release.tar.gzですが、cvsでダウンロードできる、pthreads-w32-2-9-0のソースを置いておきますので、こちらをご利用下さい。
pthreads-w32-2-9-0-release.tar.gz

pthreadもstaticライブラリにすることで、pthreadGC2.dllが不要になります。
何をしているか興味のある方は、以下の記事を参照してください。
http://sourceware.org/ml/pthreads-win32/2009/msg00004.html
http://sourceware.org/ml/pthreads-win32/2009/msg00024.html


MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf pthreads-w32-2-9-0-release.tar.gz
$ cd pthreads

ここでautostaticのパッチpthreads-autostatic.diffを適用します。

$ patch -p1 < pthreads-autostatic.diff

2010/3/10 追記
mingwrt-3.18より、TLS Callbackが実装されました。
それに伴い、autostaticパッチも修正しましたので、以下のようにパッチを使い分けてください。

mingwrt-3.17以前
pthreads-autostatic-prev.diff

mingwrt-3.18以降
2010/06/15 追記
autostatic以外に、64bit OSでの不具合対応など追加しました。
pthreads-autostatic.diff


パッチを適用したら、
$ make clean GC-autostatic
$ cp libpthreadGC2.a /mingw/lib/libpthread.a
$ cp pthread.h sched.h semaphore.h /mingw/include/.

libpthreadGC2.aは、ファイル名をlibpthread.aに変更して、コピーするのがミソです。
ヘッダファイル3つも、忘れずにコピーして下さい。

以上で終了です。
posted by あべちん at 11:47 | Comment(7) | TrackBack(0) | FFmpeg追加ライブラリ
この記事へのコメント
pthreads-w32-2-8-0-release.tar.gz のリンクが切れてますよ。
Posted by うどん君 at 2010年03月13日 14:49
間違えました(^^;

pthreads-w32-2-9-0-release.tar.gz

です。
Posted by うどん君 at 2010年03月13日 14:49
うどん君さん、こんにちは。管理人です。

ファイルをアップし直しました。
( ・д・)/−−=≡(((卍 シュッ!!

ご指摘ありがとうございました。
Posted by あべちん at 2010年03月13日 15:01
ありがとうございます。今日初めてMinGW、MSYSに触れたばっかりなので正直かなり不安です(^^;

私のような人の場合、ここのサイトのどこから見ればいいですか?一通りMinGWとMSYSを理解してからきたつもりですが、どのライブラリからインストール・コンパイルしていいのかがさっぱりわかりません(笑) 一応NASMとyasmは重要そうなので先にやりましたが・・・ 順番とかはどうでもいいのでしょうか?
Posted by うどん君 at 2010年03月13日 15:41
ffmpegの詳細なコンパイル方法ありがとうございます。
ところで改行コードの関係でうまくパッチが当たらないようです。msysでなく純debian環境などに持っていって改行コードをすべてLFに統一するなどしたら、なんとかあたりましたが……。
お手数ですが、確認いただけると幸いです。
Posted by 鬼の平八 at 2010年06月19日 11:41
鬼の平八さん、こんにちは。管理人です。

ご報告ありがとうございます。
パッチの改行コードがCRLFになっているのが原因でしょうか。

msys-1.0.10を使い続けていて、特に問題なくパッチを当てることができていたのですが、msysのバージョンによって違うのかもしれません。

とりあえず、
$ tr -d "\r" < pthreads-autostatic.diff > temp.diff
$ patch -p1 < temp.diff
などとして、改行コードを修正してパッチを当ててみてください。
Posted by あべちん at 2010年06月19日 23:05
すみません。

> パッチの改行コードがCRLFになっているのが原因でしょうか。
ではなく、パッチの改行コードがCRLFになっていませんでした。
申し訳ありません。

パッチをアップし直しましたので、今度は大丈夫だと思います。

2010/06/20
CVSの方にautostaticがマージされた模様です。
Posted by あべちん at 2010年06月20日 18:47
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/31078165
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック