3

我正在尝试将 cffi 包安装到 sbcl 中。首先,我尝试了 cffi 安装页面上推荐的 clbuild。当我尝试运行时:

clbuild quickload cffi

我收到一条错误消息:

The function ASDF::SOURCE-REGISTRY is undefined.

然后我尝试了 asdf-install,它最终抱怨

Component "cffi-examples" not found

对此的任何帮助将不胜感激。

更新

对于 asdf-install,我正在使用 slime 运行 sbcl。似乎每当它抱怨缺少的组件时,实际上已安装了该组件。我只需要中止调试器并重新启动 Emacs,启动 slime,然后再次安装,它就会成功完成。如果我不使用 slime 运行它,只是在终端的 sbcl 提示符下运行它,它会一直抱怨组件不停地丢失。

因此,要使用 asdf-install 安装 cffi,我必须重新启动 Emacs 大约 4-5 次。

我不确定 sbcl 是否存在配置问题?

我想我应该在不同的线程中问这个问题。

4

2 回答 2

10

使用 Quicklisp 非常简单。安装 Quicklisp:

然后你可以像这样安装和加载 CFFI:

  • (ql:快速加载“cffi”)

我在使用 quickproject 和 Quicklisp 制作小型 Lisp 项目中写了一些关于我如何管理小型项目及其所需库的文章。

于 2011-07-12T19:58:55.663 回答
3

以下是在 Windows 7 下手动安装的具体步骤:

首先,从以下位置下载并安装 SBCL:

http://www.sbcl.org/platform-table.html

然后下载并解压缩 ( tar xzf ...) babelalexandriatrivial-featurescffi

然后,启动 SBCL,加载 ASDF,并将这些系统的路径添加到asdf:*central-registry*

C:\Program Files\Steel Bank Common Lisp\1.0.49>sbcl.exe --core sbcl.core
This is SBCL 1.0.49, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

This is experimental prerelease support for the Windows platform: use
at your own risk.  "Your Kitten of Death awaits!"
* (load "asdf/asdf")

T
* (push "C:/Users/dhl/build/asdf/babel_0.3.0/" asdf:*central-registry*)

("C:/Users/dhl/build/asdf/babel_0.3.0/")
* (push "C:/Users/dhl/build/asdf/alexandria/" asdf:*central-registry*)

("C:/Users/dhl/build/asdf/alexandria/" "C:/Users/dhl/build/asdf/babel_0.3.0/")
* (push "C:/Users/dhl/build/asdf/trivial-features_0.6/" asdf:*central-registry*)

("C:/Users/dhl/build/asdf/trivial-features_0.6/"
 "C:/Users/dhl/build/asdf/alexandria/" "C:/Users/dhl/build/asdf/babel_0.3.0/")
* (push "C:/Users/dhl/build/asdf/cffi_0.10.6/" asdf:*central-registry*)

("C:/Users/dhl/build/asdf/cffi_0.10.6/"
 "C:/Users/dhl/build/asdf/trivial-features_0.6/"
 "C:/Users/dhl/build/asdf/alexandria/" "C:/Users/dhl/build/asdf/babel_0.3.0/")
*

(当然,您必须提供指向库的路径,而不是 `"C:/Users/dhl/...")

然后,您可以加载 CFFI:

* (asdf:load-system 'cffi)
[much compilation output]
T
*

现在,这几乎是为 Common Lisp 安装系统的基本方法。如今,有Quicklisp,它易于使用并被 Xach 的回答所涵盖。另外,请注意,有更好的方法可以使用 asdf 注册您的系统,例如将 asd 文件符号链接到支持符号链接的平台上的单个目录,并且 ASDF 2 提供了一种source-registry工具,因此您根本不必处理asdf:*central-registry*(我仍然喜欢它用于 REPL)。

总而言之,我想 Xach 的回答提供了安装 CFFI 的最简单方法,所以我推荐他的回答并将投票赞成,但在他发布之前我已经开始写我的文章了,也许它对你知道如何手动做事。

于 2011-07-12T20:21:44.007 回答