mingw版Groongaのビルド
Groongaをmingwでビルドしてみた。非公式ビルドが32bitだったので、64bit版にチャレンジ。※ Groongaは32bit OSをサポートしていません。
以下手順
MSys/MinGWインストール
- MinGWのインストーラをダウンロード
http://sourceforge.net/projects/mingw/files/ から mingw-get-inst-yyyymmdd.exe を取得する。 - インストーラを実行。オプションでMSysを追加しておく。
- http://sourceforge.net/projects/mingw-w64/files/ から Toolchains targetting Win64 / Personal Builds / sezero_20101003 を選択
- zipアーカイブをダウンロードして展開する。
ホストOSが32bitなら mingw-w64-bin_i686-mingw_20101003_sezero.zip
ホストOSが64bitなら mingw-w64-bin_x86_64-mingw_20101003_sezero.zip
※ 64bit版はネイティブコンパイラ(クロスコンパイラではない)なので、アーカイブ中のmingw64ディレクトリ以下をMinGWのルートディレクトリ(例えばC:\MinGW)に展開してもよい。 - MinGWのルートディレクトリに展開しなかった場合、mingw-w64-binを展開したフォルダをMSysのPATHに追加する。(下記参照)
MSysのPATHの追加方法
MSysのホームディレクトリに .profile というファイルを作成し、以下を記述。
※ アーカイブのmingw64ディレクトリを、MinGWのルートディレクトリに展開した場合
export PATH=/mingw/mingw64/bin:$PATH
Groongaビルド手順
- Groonga 1.1.0のpthread依存除去版 http://pub.cozmixng.org/~kou/archives/groonga-1.1.0.tar.gz を取得する。
※ 本来は http://groonga.org/download/ からダウンロードできます。次の肉の日(2011/3/29)以降。 - 64bitの場合、ltmain.shにパッチを当てる。(下記参照)
- MSysのコマンドプロンプトを開く。
- tar xf groonga-1.*.*.tar.gz によりGroongaを展開する。
- cd groonga-1.*.* で展開したディレクトリに移動する。
- 64bit OSの場合、引数なしで ./configure
- 32bit OSの場合、./configure --host=x86_64-w64-mingw32
- make
- make install
ltmain.shのパッチ
libtool 2.2に含まれるltmain.shはx86_64に未対応のため、2.4のものをバックポートする。
--- ltmain.sh.orig 2011-01-29 21:21:29 +0900 +++ ltmain.sh 2011-03-01 22:47:52 +0900 @@ -2560,7 +2560,7 @@ ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{
動作確認
残念ながら、64bit版は正常動作していないようです。まだ調べられていません。
参考情報
- ongaeshiさんとktouさんのtwitterのやりとり(http://togetter.com/li/102678)
- http://www44.atwiki.jp/ongaeshi/pages/14.html