我无法让SBCL在粘液下开始。我搞砸了,我不知道如何恢复。这个工作正常,直到我......
通过asdf加载包时遇到问题。此时我开始调试SBCL提供的asdf.lisp,看看出了什么问题。我做出的唯一改变就是在我弄清楚错误之后放一个(休息)。一切都很好,直到下次我尝试启动SBCL。
然后我收到一个swank编译错误,说asdf.fasl比asdf.lisp文件旧。这对我来说很有意义所以我重新编译了asdf.fasl。我现在得到的输出是:
(progn (load "c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "c:\\Users\\GILESR~1\\AppData\\Local\\Temp\\slime.3068" :coding-system "iso-latin-1-unix"))
This is SBCL 1.0.37, 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!"
*
; loading #P"c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-backend.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-path-parser.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-file-cache.fasl"
; compiling file "c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp" (written 22 JUL 2010 08:15:02 AM):
; file: c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp
; in: EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
; (REQUIRE 'SWANK-BACKEND::SB-BSD-SOCKETS)
;
; caught ERROR:
; (during compile-time-too processing)
; The function ASDF::MODULE-PROVIDE-ASDF is undefined.
; (REQUIRE 'SWANK-BACKEND::SB-INTROSPECT)
;
; caught ERROR:
; (during compile-time-too processing)
; The function ASDF::MODULE-PROVIDE-ASDF is undefined.
; (REQUIRE 'SWANK-BACKEND::SB-POSIX)
;
; caught ERROR:
; (during compile-time-too processing)
; The function ASDF::MODULE-PROVIDE-ASDF is undefined.
; (REQUIRE 'SWANK-BACKEND::SB-CLTL2)
;
; caught ERROR:
; (during compile-time-too processing)
; The function ASDF::MODULE-PROVIDE-ASDF is undefined.
;
; compilation unit aborted
; caught 1 fatal ERROR condition
; caught 4 ERROR conditions
;
; compilation aborted because of fatal error:
; SB-INT:SIMPLE-READER-PACKAGE-ERROR at 1839 (line 62, column 18) on #<SB-SYS:FD-STREAM
; for "file c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp"
; {24564B89}>:
; package "SB-POSIX" not found
; ; compilation aborted after 0:00:00.045
;;
;; Error while compiling c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp:
;; COMPILE-FILE returned NIL.
;; Aborting.
所以在重新编译的asdf中找不到它需要的东西。为了解决这个问题,我已经完成了对SBCL的完全卸载和重新安装。没有快乐。我的.sbclrc中也没有任何内容。
更新:在查看asdf.lisp源代码时,缺少的函数肯定在文件中。阻止他们编译的事情我认为是这样的:
#+(and sbcl sbcl-hooks-require)
我对lisp的了解目前还不足以在环境中编译asdf文件以触发上述条件编译语句。
答案 0 :(得分:0)
我使用以下步骤对问题进行了排序:
运行以下代码,将sbcl-hooks-require符号添加到功能列表中:
(推送:sbcl-hooks-require 功能)
重新编译asdf.lisp。为了做到这一点,我需要在已安装的C:\ Program files \ Steel ...目录之外重新编译asdf,因为Windows Vista上的UAC将停止正在编写的fasl。例如:
(编译文件“C:\ foobar \ asdf.lisp”)
将生成的fasl复制回C:\ Program files \ Steel ...以覆盖原始的fasl。
更新:stackoverflow上的格式化已经淘汰了一些代码位。代码应如下:
(push :sbcl-hooks-require *features*)
(compile-file "C:\\foobar\\asdf.lisp")