
	Linux 用 jnethack(3.4.0) のコンパイル例


0) はじめに

必要な環境については Install.unx 参照。
Plamo Linux 3.0 でコンパイルしました。

flex version 2.5.4
GNU Bison version 1.28


1)アーカイブの展開・パッチ当て

$ tar zxvf nethack-340.tgz
$ cd nethack-3.4.0
$ zcat jnethack-3.4.0-0.8.diff.gz | patch -p1
 

2)ファイルの編集

2-1) nethack-3.4.0/sys/unix/Makefile.top を編集する

GAMEGRP = bin
GAMEPERM = 04755
EXEPERM = 755
DIRPERM = 755

上記の行を以下のように編集します。

GAMEGRP = games
GAMEPERM = 02775
EXEPERM = 775
DIRPERM = 775


2-2) nethack-3.4.0/sys/unix/Makefile.src を編集する

# flags for Linux
# compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include
LFLAGS = -L/usr/X11R6/lib


2-3) nethack-3.4.0/sys/unix/Makefile.util を編集する

# flags for Linux
# compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include
LFLAGS = -L/usr/X11R6/lib


2-4) nethack-3.4.0/include/config.h を編集する

#define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */


2-5) nethack-3.4.0/include/unixconf.h を編集する

#define SYSV /* define for System V, Solaris 2.x, newer versions */

次に Linux 定義部分も編集。

#define LINUX /* Another Unix clone */

次に timed_delay 定義部分も編集。

#define TIMED_DELAY /* usleep() */


3) コンパイル

$ sh sys/unix/setup.sh
$ make


4) インストール

4-1) はじめてインストールする場合

# make install

4-2) 上書きする場合(セーブデータが保護されます)

# make update


5) エラーメッセージ

5-1) 起動時に Warning: cannot write scoreboard file record

record ファイルのパーミッションが設定されていない場合表示されます。

# chmod g+w /usr/games/lib/jnethackdir/record


5-2) 終了時に Cannot open log file!

logfile ファイルのパーミッションが設定されていない場合表示されます。

# chmod g+w /usr/games/lib/jnethackdir/logfile


5-3) セーブ時に No such file or directory Exec to compress save/[キャラクター名] failed.

compress もしくは gzip が存在しないか設定が間違っています。
2-4 の設定を変更して再コンパイルするか 2-4 で設定されているところにリンクをはる必要があります。
