2011-07-12 25 views
3

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

clbuild quickload cffi 

我得到一个错误说:

The function ASDF::SOURCE-REGISTRY is undefined. 

我又试图ASDF安装,它最终在抱怨

Component "cffi-examples" not found 

任何帮助这将不胜感激。

UPDATE

对于ASDF安装,我正在与泥SBCL。似乎只要它抱怨缺少的组件,该组件实际上就已经安装了。我只需中止调试器并重新启动Emacs,启动粘液,然后再次安装,并且它会成功完成。如果我没有用粘液运行它,只是在终端的sbcl提示符内运行它,它会一直抱怨组件不间断地丢失。

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

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

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

回答

3

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

首先,下载和安装SBCL:

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

然后下载并解压(tar xzf ...babelalexandriatrivial-features,和cffi

然后,启动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: /用户/ DHL/...“)

然后,您可以加载CFFI:

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

现在,这几乎是光秃秃的骨头的方法来安装Common Lisp的系统。现在,有Quicklisp,这很容易使用,并由Xach的答案覆盖。此外,请注意,有更好的方法来使用asdf注册您的系统,如将asd文件symlinking到支持符号链接的平台上的单个目录,ASDF 2提供source-registry工具,因此您不必在asdf:*central-registry*处处理asdf:*central-registry*所有(我仍然喜欢它的REPL使用)。总而言之,我想Xach的答案提供了最简单的方式来获得CFFI的工作安装,所以我建议他的答案,并将其投票,但我已经开始写我的文章,然后他发布它,也许它的对你来说有一些用途,以便知道如何手动执行操作。

+0

非常感谢你。我刚开始尝试手动安装,但是我犹豫了,因为我对CL系统一般还不太了解,比如如何加载库,或者它在哪里寻找已安装的库等等。我认为你的解释确实如此帮助。 – sudo

+0

您的意思是“源注册表”吗?在.sbclrc中,我使用* central-registry *。 * central-registry *和source-registry之间有什么区别? – sudo

+0

是的,谢谢你的纠正(固定)。简而言之,区别在于,您可以将系统目录放在'〜/ .local/share/common-lisp/source /'下,并且所有内容都可以正常工作。有关快速介绍,请参阅http://common-lisp.net/project/asdf/asdf.html#Configuring-ASDF,以及http://common-lisp.net/project/asdf/asdf.html#Controlling-where- ASDF搜索系统的细节。 asdf:* central-registry *'相反,是ASDF查找asd文件的目录列表(没有下降到子目录)。通常,一个目录和符号链接所有的asd文件。 – danlei