前陣子迷上Nethack,下載了官方build的binary回來在Snow Leopard上玩,也偷偷在公司的svn伺服器上裝了Linux版的。上班時用ssh連進去偷玩,哈哈。
結 果昨晚下班後躺在床上用我的黑麥書玩,手賤打開Activity Monitor瀏覽了一下,發現一個驚人的事實!Nethack官方的Mac build竟然是PowerPC build!儘管我的黑麥書是Intel C2D跑10.6雪豹,跑這個terminal下的遊戲竟然還得用rosetta!
現在Mac的程式沒有編譯成64 bit我都會怒了,更何況是PowerPC build!
反正我有安裝XCode,決定自己來編譯64 bit的binary!
1. 首先到官網下載最新3.4.3版的原始碼:http://www.nethack.org/v343/download-src.html
2. 解開壓縮檔:tar zxvf nethack-343-src.tgz
接下來基本上參照 http://nethack.wikia.com/wiki/Compiling 的方法來編譯,不過不要全部照他的做,有些是不必要的,反而會無法編譯成功。重點大致上如下:
3. 產生Makefile:sh $SRC/sys/unix/setup.sh
4. 不要安裝它建議的patch-ac!因為我們不想#define BSD!所以不會有srandom的問題!
5. 修改termcap.c:vi $SRC/win/tty/termcap.c。改成:
Line 838: #if !defined(LINUX) && !defined(__APPLE__)
6. 修改Makefile:vi $SRC/src/Makefile。改成:
Line 233: WINTTYLIB = -lncurses
Line 234: # WINTTYLIB = -ltermlib
Line 154: CFLAGS = -arch x86_64 -O -I../include
CFLAGS不用照它說的改成 -O2,不會有問題的!
7. 開始編譯主程式!
cd $SRC/src
make
編譯至此都成功的話,接下來就是編譯輔助檔案。
8. 修改$SRC/Makefile如下:
Line 20: GAMEUID = root
Line 21: GAMEGRP = staff
Line 25: GAMEPERM = 0755
Line 26: FILEPERM = 0664
Line 28: DIRPERM = 0775
9. 進行編譯:
cd $SRC
make all
都沒什麼問題的話,接下來就是把剛剛所有編譯好的程式安裝到系統中。
10. 安裝編譯好的binary:
cd $SRC
sudo make install
到這邊已經算是大功告成了!不過如果想要完整的話,還可以安裝Nethack的man pages。
11.編輯$SRC/doc/Makefile,改成:
Line 44: MANDIR = /usr/games/man/man6
12. 安裝man pages:
cd $SRC/doc
sudo make manpages
這樣一來,所有的檔案都會被安裝在/usr/games下。以後要移除,只要把這個目錄刪除就好。
現在執行nethack,打開Activity Monitor來看,nethack這個程序終於以Intel 64 bit binary在執行了!爽度滿點!
No comments:
Post a Comment