Как правильно сохранить образ Common Lisp с помощью SBCL?
Если я хочу создать Lisp-образ моей программы, как мне сделать это правильно? Есть ли предпосылки? И разве это не играет хорошо с QUICKLISP?
Прямо сейчас, если я запускаю SBCL (только с предварительно загруженным QUICKLISP) и сохраняю изображение:
(save-lisp-and-die "core")
А затем попробуйте запустить SBCL снова с этим изображением
sbcl --core core
А затем попробуйте сделать:
(ql:quickload :cl-yaclyaml)
Я получаю следующее:
To load "cl-yaclyaml":
Load 1 ASDF system:
cl-yaclyaml
; Loading "cl-yaclyaml"
.......
debugger invoked on a SB-INT:EXTENSION-FAILURE in thread
#<THREAD "main thread" RUNNING {100322C613}>:
Don't know how to REQUIRE sb-sprof.
See also:
The SBCL Manual, Variable *MODULE-PROVIDER-FUNCTIONS*
The SBCL Manual, Function REQUIRE
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [RETRY ] Retry completing load for #<REQUIRE-SYSTEM "sb-sprof">.
1: [ACCEPT ] Continue, treating completing load for #<REQUIRE-SYSTEM "sb-sprof"> as having been successful.
2: Retry ASDF operation.
3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
4: [ABORT ] Give up on "cl-yaclyaml"
5: Exit debugger, returning to top level.
(SB-IMPL::REQUIRE-ERROR "Don't know how to ~S ~A." REQUIRE "sb-sprof")
0]
В качестве альтернативы, если я попытаюсь:
(require 'sb-sprof)
когда sbcl запускается с сохраненным ядром, я получаю ту же ошибку. Если sbcl запускается так же, какsbcl
нет сообщений об ошибках.
На самом деле, предварительная загрузка QUICKLISP не является проблемой: та же проблема возникает, если sbcl первоначально вызывается сsbcl --no-userinit --no-sysinit
.
Я делаю это неправильно?
PS. Если я использую Розуэлл,ros -L sbcl-bin -m core run
как-то не подхватывает изображение (проверено объявлением переменной*A*
перед сохранением и не увидев его один раз перезапустил).
PS2. Пока это выглядит так: sbcl не предоставляет модули расширения (SB-SPROF
, SB-POSIX
и т. д.), если они явно не требуются перед сохранением изображения.