Tra*_*alk 3 common-lisp asdf quicklisp
我最近一直在做我的第一个quicklisp项目,我想分享一下。我已将其放在github上,但并非每个人都安装了emacs + slime + quicklisp,因此我想制作一个可执行文件,可以将其放入代码中。
为此,我正在使用buildapp并遵循此 stackoverflow答案中列出的步骤。
$ sbcl --no-userinit --no-sysinit --non-interactive \
--load ~/quicklisp/setup.lisp \
--eval '(ql:quickload "ltk-colorpicker")' \
--eval '(ql:write-asdf-manifest-file "quicklisp-manifest.txt")'
$ buildapp --output out \
--manifest-file quicklisp-manifest.txt \
--load-system ltk-colorpicker \
--entry colorpicker
Run Code Online (Sandbox Code Playgroud)
运行这些命令后,出现以下错误:
Fatal INPUT-ERROR-IN-LOAD:
READ error during LOAD:
The symbol "*SYSTEM-DEFINITION-SEARCH-FUNCTIONS*" is not external in the ASDF/FIND-SYSTEM package.
Line: 16, Column: 90, File-Position: 15267
Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/nathan/quicklisp/local-projects/ltk-colorpicker/dumper-2SKVI5f7.lisp" {1001B70F83}>
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是我什至不知道如何开始修复它。我已经看到过这个 gibhub问题,但这与Homebrew的问题有关,甚至从未提及buildapp。一切都很混乱。我希望我能得到一些帮助。
预先感谢您的任何答案。
我可以重现该错误。如注释中所建议,您可以构建buildapp如下的最新版本:
$ sbcl
* (ql:quickload :buildapp)
...
* (buildapp:build-buildapp
(merge-pathnames "bin/buildapp" (user-homedir-pathname)))
Run Code Online (Sandbox Code Playgroud)
这个构建$HOME/bin/buildapp。当我使用新的二进制文件时,不再有错误。
您还可以通过buildapp::main从Common Lisp 系统调用函数来避免生成可执行文件(最终可能会过时)。然后,您将始终拥有与quicklisp当前版本相对应的版本:
* (buildapp::main
'("BUILDAPP" ;; argv[0] must exist but the value is not important
"--manifest-file" "/tmp/quicklisp-manifest.txt"
"--load-system" "drakma" "--output" "/tmp/test"))
Run Code Online (Sandbox Code Playgroud)