2011-07-12 26 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