2012/07/30

Raspberry Pi可以跑Clozure CL囉

2012年7月21日發佈的消息Clozure CL從版本r14525開始支援ARMv6的Linux了,也就是說,可以在Raspberry Pi(以下簡稱rpi)板子上跑囉。

底下是我安裝Clozure CL的過程,我用的發行套件是Raspbian wheezy(2012-07-15-wheezy-raspbian.img)。

啟動rpi,連上網路。

安裝subversion(若尚未安裝的話)。
$ sudo apt-get install subversion

以subversion抓取Clozure CL,以底下指令抓取linux + arm的最新版本。
$ svn co http://svn.clozure.com/publicsvn/openmcl/trunk/linuxarm/ccl

其中trunk代表要抓最新的,linuxarm代表要抓ARM的Linux。Clozure CL支援很多種CPU架構與作業系統,其他還有darwinx86、linuxx86、freebsdx86、solarisx86、windows、linuxppc。

我抓完後畫面上顯示著"Checked out revision 15426.",請注意這個數字應該要大於14525。

抓下來的Clozure CL被存放在ccl子目錄裡。請切換到ccl子目錄。然後就能以裡面的映像檔啟動Clozure CL環境了。
$ ./armcl

哇,可以計算1+2耶,有了lisp環境,你想做什麼就做什麼吧。

上圖歡迎訊息裡可以看到r15424的字眼,這跟我們抓到的15426不一樣,所以接下來我要嘗試重新編譯Clozure CL。

執行原有的ccl映像檔:
$ ./armcl --no-init
看到Clozure CL的歡迎訊息後,下達重新編譯建置的指令:
? (rebuild-ccl :full t)


但我遭遇一些障礙,記錄如下:

我編譯時發現少了m4這支工具,所以請以$ sudo apt-get install m4安裝。

ccl開發人員似乎是在Debian squeeze上測試的,而我用的是wheezy(2012-07-15-wheezy-raspbian.img),因為如此(我也不確定),所以編譯時會出現類似
/usr/bin/ld: error: ../../armcl uses VFP register arguments, pmcl-kernel.o does not
/usr/bin/ld: failed to merge target specific data of file pmcl-kernel.o
的錯誤訊息,解法方法是修改ccl/lisp-kernel/linuxarm/float_abi.mk這支檔案,將FLOAT_ABI = softfp改成FLOAT_ABI = hard,然後就能成功編譯了。

下圖是成功編譯一開始的畫面。


下圖是成功編譯的結束畫面。


重新編譯成功後,以$ ./armcl重新啟動,耶,出現15426字樣囉,最新版本。


編譯所需時間還滿久的(我忘記記錄了,大概要一小時吧)。

如果你編譯時發生其他錯誤,因為重新編譯會砍掉原有Clozure CL映像檔,可下指令$ svn update重新抓回來。

參考文件可到Clozure CL官方網站找找重新編譯的步驟與解說

然後找本lisp好書學習這支程式語言*_*。

1 comment: