在 Mac OSX 版的 LispBox 环境上安装配置 SBCL 详细过程

在 Mac OSX 版的 LispBox 环境上安装配置 SBCL 详细过程

今天在OSX版的 LispBox(使用CCL) 下安装 portableaserve 受挫,就跑到 PC下试,结果CCL结果一样,用 SBCL 好像还有点小进展,于是决定为 Mac 上的 LispBox 也安装一个SBCL,安装过程中居然遇到几个问题,还好最终全部解决了,详细记录一下做个参考。

首先去SBCL的官网下载最新版的用于 Mac 的安装包,链接在这里:

解压后拷贝到我的 LispBox 目录下,然后修改两个文件(Emacs 目录下的lispbox.sh 和 lispbox.el),新增一个文件(在SBCL的目录下新增 lispbox-register.el )。

修改好之后,运行,结果老是在编译 swank-sbcl.lisp 时报错,提示如下:

>>> ;; Error while compiling /Users/enguerrand-petit/slime/swank-sbcl.lisp:
>>> ;;   Don't know how to REQUIRE SB-BSD-SOCKETS.
>>> ;; See also:
>>> ;;   The SBCL Manual, Variable *MODULE-PROVIDER-FUNCTIONS*
>>> ;;   The SBCL Manual, Function REQUIRE
>>> ;; Aborting.
刚看到这个错误也有些发晕,转念一想,很有可能是找不到路径,检查了一下,看到在 sbcl 的目录下,sb-bsd-sockets 放在子目录 contrib 下,于是反复修改了上述两个文件: Emacs 目录下的lispbox.sh 和 lispbox.el ,给路径加上contrib,但结果始终不变。

没辙了,就上网搜索,很迅速就搜到这篇帖子:http://lists.common-lisp.net/pipermail/slime-devel/2011-September/018207.html 里面提到的原因跟我分析的一样,不过更详细地提到是SBCL_HOME 的设置,原文如下:

>> The most likely cause is that SBCL is unable to find the "contrib"
>> directory where SB-BSD-SOCKETS is stored.  If I remember correctly, this
>> can be specified with the SBCL_HOME environment variable:
>> SBCL_HOME=<path-where-rest-of-sbcl-is>/contrib.
再次检查我的配置文件,发现确实修改得不完全,于是首先修改 lispbox.sh,修改如下:

export SBCL_HOME=${LISPBOX_HOME}/sbcl-1.0.55-x86-darwin/contrib

再修改 lispbox.el,修改如下:

(setenv "SBCL_HOME" (lispbox-file "sbcl-1.0.55-x86-darwin/contrib"))
修改完之后再次运行,这次终于把这个坎跨过去了,不过又提示找不到 sbcl 的 core 文件,还好,刚才读了 sbcl 的说明文档,其中提到,想让 sbcl 运行起来,只需要两个文件,一个是unix可执行文件 sbcl,一个是映像文件 sbcl.core ,在 sbcl 的各级目录里找到这两个文件,然后一起把它们拷贝到子目录 contrib 下。

再次运行,一切OK!

胜利的截图:

在 Mac OSX 版的 LispBox 环境上安装配置 SBCL 详细过程

你可能感兴趣的:(在 Mac OSX 版的 LispBox 环境上安装配置 SBCL 详细过程)