Windows Xp上のMinGWでJUnNetHack 3.5をコンパイルする。
下記のURLから次のファイルをダウンロードする。
http://sourceforge.net/projects/mingw/files/
- [Automated MinGW Installer]-[MinGW 5.1.4]
- [MSYS Base System]-[Current Release_ MSYS-1.0.11]
- [MSYS regex]-[regex-1.20090805-1]
- libregex-1.20090805-1-msys-1.0.11-dll-1.tar.lzma
- [MSYS flex]-[flex-2.5.35-1]
- flex-2.5.35-1-msys-1.0.11-bin.tar.lzma
- [MSYS bison]-[bison-2.4.1-1]
- bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
- [MinGW libiconv]-[libiconv-1.13.1-1]
- libcharset-1.13.1-1-mingw32-dll-1.tar.lzma
- libiconv-1.13.1-1-mingw32-dll-2.tar.lzma
なお、MSYS regexはMSYS flexが要求するため必要です。
MinGWをインストールする。
- MinGW-5.1.4.exeを実行する。
- [Next]ボタンを押下する。
- [Download and install]を選んで[Next]ボタンを押下する。
- [I Agree]ボタンを押下する。
- [Previous]を選んで[Next]ボタンを押下する。
[Current]を選んだ場合、gcc-core-3.4.5-20060117-3.tar.gzがインストールされるが、このアーカイブのgccはiconvに対応していないのでShift_JISのソースをコンパイルできない。
- [MinGW base tools]、[g++ compiler]を選んで[Next]ボタンを押下する。
makeはMSYSのものを使用するのでインストールしない。
- [Download Folder]にc:\MinGWが入力されているのを確認して[Next]ボタンを押下する。
- [Install]ボタンを押下する。
以下のファイルがダウンロードされてインストールされる。
mingw-runtime-3.14.tar.gz
w32api-3.11.tar.gz
binutils-2.17.50-20060824-1.tar.gz
gcc-core-3.4.2-20040916-1.tar.gz
gcc-g++-3.4.2-20040916-1.tar.gz
- [Next]ボタンを押下する。
- [Finish]ボタンを押下する。
MSYSをインストールする。
- MSYS-1.0.11.exeを実行する。((古いバージョンでは lzmaが入ってない場合があるので注意。))
- [はい(Y)]ボタンを押下する。
- [Next]ボタンを押下する。
- [Yes]ボタンを押下する。
- [Next]ボタンを押下する。
- インストールフォルダにC:\msys\1.0が入力されているのを確認して[Next]ボタンを押下する。
- Star Menu FolderにMinGWが入力されているのを確認して[Next]ボタンを押下する。
- [Install]ボタンを押下する。
- プロンプトが表示される。
"Do you wish to continue with the post install? [yn ]"
と表示されるのでyを入力してEnterを押下する。
"Do you have MinGW installed? [yn ]"
と表示されるのでyを入力してEnterを押下する。
"Where is your MinGW installation?"
と表示されるので2.6で指定したフォルダを入力してEnterを押下する。
ここではc:\MinGWとする。
環境構築とチェックが行われ、makeがc:\MinGW\bin\にコピーされる。
- 何かキーを押下してプロンプトを閉じる。
- [Finish]ボタンを押下する。
flex、bison、iconvのインストール
デスクトップのMSYSショートカットをダブルクリックするとMSYSのプロンプトが表示される。
現在のユーザをhogeとすると
c:\msys\1.0\home\hogeをカレントフォルダとしているはず。
以下ではこのフォルダを基点に説明する。
- 作業用フォルダをinstworkを作る。
$ mkdir instwork
- lzmaファイルのコピー
c:\msys\1.0\home\hoge\instwork
に1でダウンロードしたlzmaのファイルをコピーする。
- カレントフォルダの移動
$ cd instwork
$ ls
bison-2.4.1-1-msys-1.0.11-bin.tar.lzma
flex-2.5.35-1-msys-1.0.11-bin.tar.lzma
libcharset-1.13.1-1-mingw32-dll-1.tar.lzma
libiconv-1.13.1-1-mingw32-dll-2.tar.lzma
libregex-1.20090805-1-msys-1.0.11-dll-1.tar.lzma
- ファイルの解凍
$ lzma -d *.lzma
$ tar xvf bison-2.4.1-1-msys-1.0.11-bin.tar
$ tar xvf flex-2.5.35-1-msys-1.0.11-bin.tar
$ tar xvf libcharset-1.13.1-1-mingw32-dll-1.tar
$ tar xvf libiconv-1.13.1-1-mingw32-dll-2.tar
$ tar xvf libregex-1.20090805-1-msys-1.0.11-dll-1.tar
- ファイルの移動
c:\msys\1.0\home\hoge\instwork\bin配下の
bison.exe
flex.exe
msys-regex-1.dll
yacc
をc:\msys\1.0\binに移動する。
c:\msys\1.0\home\hoge\instwork\share
をc:\msys\1.0\に上書き移動する。
残った
c:\msys\1.0\home\hoge\instwork\bin
c:\msys\1.0\home\hoge\instwork\include
c:\msys\1.0\home\hoge\instwork\lib
をc:\MinGWに上書き移動する。
- プロンプトを閉じる。
$ exit
なお、instworkはフォルダごと削除してしまってかまいません。
http://unnethack.sourceforge.net/
の[Download UnNetHack files]をクリックしてunnethack-3.5.1.tar.gzをダウンロード
JUnNetHackパッチのダウンロード
http://sourceforge.jp/projects/junnethack/
からjunnnethack-3.5.1-J0.1.0.diff.gzをダウンロード
JUnNetHackソースの構築
- 任意の作業フォルダ(パスに空白や2バイトコードを含まない)を作成する。
- unnethack-3.5.1.tar.gzを作業フォルダに解凍する。
- できたunnethack-3.5.1フォルダを複製して複製したフォルダ名をjunnethack-3.5.1とする。
- junnethack-3.5.1フォルダ内にjunnnethack-3.5.1-J0.1.0.diff.gzを解凍する。
- 作成されたjunnnethack-3.5.1-J0.1.0.diffの文字コードを確認する。
文字コードはShift_JIS、改行コードはLFにしておくこと。
- パッチの実行
patch -p1 < junnnethack-3.5.1-J0.0.1.diff
なお、msysのpatchではパッチを当てる対象の改行コードがLFとCRLF混在だとrejectすることがあるようです。cygwinのpatchでは差分ファイルの改行コードがLFである限りはパッチを当てる対象に改行コードが混在していても問題ないようです。
- パッチの削除
パッチは削除しておきましょう。
JUnNetHackのコンパイル
構築したJUnNetHackソースとは別に、コンパイル用のフォルダを作成しましょう。
- junnethack-3.5.1フォルダを複製して複製したフォルダ名をjunnethack-3.5.1-mingwとする。
- 複製したフォルダ内に以下のような内容のファイルを#prompt.cmdの名で作成する。
@echo off
PATH=%SystemRoot%\system32;%SystemRoot%
PATH=%PATH%;c:\MinGW\bin
PATH=%PATH%;c:\msys\1.0\bin
set C_INCLUDE_PATH=/c/MinGW/include
set LD_LIBRARY_PATH=c:/MinGW/lib
set LIBRARY_PATH=%LD_LIBRARY_PATH%
SET LANG=ja_JP
@echo on
cmd
- #prompt.cmdを実行する。
なお、デスクトップのmsysショートカットはcmdの替わりにshでプロンプトを
実行するが、この上でconfigureの実行を行うとgamesユーザや
bin権限グループが存在しないとエラーになる。
これらを解消しても実行時にmsysやmingw環境を必要としてしまうので避ける。
- configureの実行
bzip2やgzipがないと動作しないバイナリを作る気はないので
sh ./configure --with-compression=no
で実行する。
- makeの実行
make
で実行する。
- make installの実行
make install
で実行する。
c:\msys\1.0\local\junnethackdir 配下にインストールされる。