【问题标题】:Error starting sbcl under slime on Vista在 Vista 上的 slime 下启动 sbcl 时出错
【发布时间】:2010-08-04 15:24:06
【问题描述】:

我无法让 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文件触发上述条件编译语句。

【问题讨论】:

    标签: emacs lisp slime sbcl


    【解决方案1】:

    我已使用以下步骤对问题进行了排序:

    1. 从 Windows 开始菜单启动 sbcl。
    2. 运行以下代码将 sbcl-hooks-require 符号添加到功能列表中:

      (push :sbcl-hooks-require 功能)

    3. 重新编译 asdf.lisp。为此,我需要在已安装的 C:\Program files\Steel... 目录之外重新编译 asdf,因为 Windows Vista 上的 UAC 将停止写入 fasl。例如:

      (编译文件 "C:\foobar\asdf.lisp")

    4. 将生成的 fasl 复制回 C:\Program files\Steel... 以覆盖原始 fasl。

    更新:stackoverflow 上的格式已经删除了一些代码位。代码应该如下:

    (push :sbcl-hooks-require *features*)
    (compile-file "C:\\foobar\\asdf.lisp")
    

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 2015-08-23
      • 2015-07-02
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2016-01-05
      • 1970-01-01
      相关资源
      最近更新 更多