トップ 検索 一覧 差分 ソース ヘルプ RSS ログイン

今更MinGW(1)

今更MinGW/MSYS インストール2008年春版

ちょっとしたツールを作るのにMinGW/MSYSを使うことが多いのだが、最近のMinGW/MSYSはffmpegのように常にβ版な匂いが隠し切れておらず、標準的な環境構築方法がになりがち。いろいろあってどれをダウンロードしてよいかわからない。

ここでは最新版にこだわるより、標準的な方法を確立し、その後に必要な部分のみ更新する手順をまとめておく。まぁ備忘録兼、近隣への周知ですな。

 キーワード羅列

細かな注意を別としてキーワードのみ並べると、

  • http://sourceforge.net/project/showfiles.php?group_id=2435
  • Automated MinGW Installer / MinGW-5.1.3.exe / g++欲しい / Makeはどうでも
  • MSYS Base System / MSYS-1.0.10.exe / ポストインストールは従え / rxvtやめ
  • MSYS Supplementary Tools / msysDTK-1.0.1.exe / autotoolsが入る
  • 現在のMinGWのダウンロードページはTechnology Preview主体だがCurrentで行くべし

何はともあれMinGW

MinGW/MSYSのダウンロードページは
http://sourceforge.net/project/showfiles.php?group_id=2435

ここから"Automated MinGW Installer"のMinGW-5.1.3.exeを取得し、インストールする。途中の選択肢は、Download and install→Currentとする。ライブラリが中途半端なjavaや主流でないObjective-Cはともかく、C++はコンパイルしたいのでパッケージの選択では最低限g++ compilerは入れておく。

 GCC4.xを入れたい場合

Currentでなく最新版を入れればGCC4.x系列になるが、ここでは入れない。後ほど4.x系列を共存させる手順を別ページにて追加する予定。3.x系列が不要であればここで最新版を入れてしまっても構わない。2007/04/03追記:gcc4.2.1は問題ない箇所でエラーを報告するなど若干不安定で、出来上がるバイナリも大きくなることが多い。標準のgcc3.4.5を推奨する。

 MSYSを入れない場合

MSYSが不要な場合はパッケージ選択でMinGW Makeも入れた方がいいだろう。MinGW Makeはmingw32-make.exeというファイル名になっているため、MSYSを入れない場合限定で、make.exeにリネームまたはコピーする。なお、コマンドプロンプトでMinGWを使用するにはMinGWのbinフォルダにパスを通す必要がある。

やっぱりMSYSも欲しい

小規模な自作ツール等ではMinGWのみでも問題ない。単純なmakeも出来る。しかし実際ビルドするのにはシェルスクリプトの動作が必要なソフトも多いため、MSYSが欲しくなる。

MSYSを入れることにより…

  • bashがインストールされ、シェルスクリプト(configure等)が使用可能になる。
  • bzip2やdiff/patchなどの一般的コマンドがインストールされる。

上記ページの"MSYS Base System"にMSYSのインストーラがあるのだが、現在"Technology Preview: MSYS-1.0.11"が優先して表示されている。安定バージョンの"CurrentRelease: msys-1.0.10"の方を+で開き、MSYS-1.0.10.exeを取得する。

インストール後、コマンドプロンプトが開き、インストールの後処理が始まる。ここで行われるのはMinGWのディレクトリのマウント(/etc/fstabへの追加)、重複コマンドの削除、MinGW側のmakeの検出。基本的には任せておいていい。

 MinGWとMSYSのmake

MinGWのインストール時にmakeをインストールしても

Oh joy, you do not have c:/MinGW/bin/make.exe. Keep it that way.

と言われるが問題ない。

これは以下のような事情による。MinGWの昔のバージョンに付属のmake.exeにはバグがあり、対策としてMSYSはmake.exeを探してmingw32-make.exeにリネームする。しかし現在のMinGWには初めからmingw32-make.exeのファイル名で付属しているため、make.exeがないと言われている。

現在のMinGWに付属のmingw32-make.exeは2007/03/22にビルドされており、恐らく元のバグは改修済みだ。MSYSのCurrentは長く更新されていないため、このようなちぐはぐな動作をするのだろう。猫Pの環境では、MinGW/MSYSどちらのmakeでも、特に問題が出たことはない。

なお、この後処理スクリプトは実行後に削除される。保存しておきたい場合はC:\msys\1.0\postinstallを保存しておくこと。

 MSYSのターミナル

デスクトップに出来るMSYSのアイコンからはrxvtというターミナル(コマンドプロンプト的なもの)が起動する。これはこれでよいのだが、MSYSは通常のコマンドプロンプトでも起動できる。個人的にはこっちの方が好きなので設定方法を書いておく。

MSYSのインストールディレクトリ(デフォルトではC:\msys\1.0)にはmsys.batがある。この40行目から

if EXIST bin\nul cd bin

if EXIST rxvt.exe goto startrxvt

if EXIST sh.exe goto startsh

とあり、この2番目にかかるとrxvt、3番目にかかるとコマンドプロンプトになる。なので順番を変え、

if EXIST bin\nul cd bin

if EXIST sh.exe goto startsh

if EXIST rxvt.exe goto startrxvt

とする。

msysDTK

MSYSのインストールで大分環境が整うが、まだビルド出来ない物がある。automake / autoconf / libtoolなどのいわゆるautotoolsを必要とするものだ。これはmsysDTKというMSYSの追加セットで入れることができる。個人的にはscpやsshはともかく、autotoolsくらいMSYSの標準セットに入っていても良さそうだと思うが、入っていない物は仕方がない。msysDTKも入れることにする。

"MSYS Supplementary Tools"の"Current Release: msysDTK-1.0.1"の方を+で開き、msysDTK-1.0.1.exeを取得する。インストールには特に迷う部分はない。

以上でMinGWの環境構築はひとまず終了。

Technology Previewについて(2008/04/03追記)

MinGW/MSYSのリリースは現在のバージョンがCurrent、次期候補がTechnology Previewという形でリリースされている。この代替わりはあまり頻繁ではなく、両者に含まれるコマンドのバージョンは大きく乖離しがちだ。

しかし、最新を使いたいがために何でもTechnology Previewを入れてしまうと、かなり苦労させられる。安定している物とそうでない物の差が激しく、特にgcc4.2.1ではソースの文法解析のバグから、ビルド物の実行時の不正終了まで色々と問題が発生する。恐らくMinGWの問題というよりはオリジナルのgcc側のバグではないかと思われる。

出来るだけ最近のバージョンを使用したいのは猫Pとしても山々なのだが、猫科研究所では「必要に迫られない限りTechnology Previewは使用しない」方針で行く。

個別対応項目

MSYSに入っているツールが古いためにビルドできない物がいくらかある。それらをビルドする記事を書く際に、記事を追加したいと思う。ライブラリ類も足りない。その最たる物がzlibだ。

最終更新時間:2008年04月03日 18時25分29秒