我想使用buildapp使curl-lisp可执行文件成为一个示例。
buildapp --output lisp-curl --asdf-path ~/src/clbuild/systems/ \
--load-system drakma \
--eval '(defun main (args) (write-string (drakma:http-request (second args))))' \
--entry main由于我没有路径"~/src/clbuild/ systems /",在使用quicklisp时,我的系统应该位于"~/quicklisp/dists/quicklisp/software",但当我执行以下操作时:
buildapp --output lisp-curl \
--asdf-path ~/quicklisp/dists/quicklisp/software \
--load-system drakma \
--eval '(defun main (args) (write-string (drakma:http-request (second args))))' \
--entry main
; file: /home/simkoc/dumper-YKYna1b3.lisp
; in: DEFUN DUMP-FILE-DEBUGGER
; (QUIT :UNIX-STATUS 111)
;
; caught STYLE-WARNING:
; SB-EXT:QUIT has been deprecated as of SBCL 1.0.56.55. Use SB-EXT:EXIT or
; SB-THREAD:ABORT-THREAD instead.
;
; In future SBCL versions SB-EXT:QUIT will signal a full warning at compile-time.
;
; compilation unit finished
; caught 1 STYLE-WARNING condition
Fatal MISSING-COMPONENT:
Component "drakma" not found这对一个问题的回答已经暗示,quicklisp能够以buildapp能够检索它的方式导出其系统,但遗憾的是,它没有详细说明。
我还尝试不使用--asdf-path,因为SBCL (启动时)已经能够使用(require 'drakma)或(asdf:load-system "drakma")加载Drakma。同时,使用--require而不是--load-system也不会做这笔交易。
因此:我如何结合使用buildapp和quicklisp来制作一个具有所需系统的可执行文件(我只是简单介绍了缺少的组件部分)。
发布于 2013-09-20 14:01:07
如果Drakma已经安装在quicklisp中,我认为如果您使用--asdf-tree而不是--asdf-path,您的示例将有效。但是使用Quicklisp目录作为树可能会带来一些麻烦,因为树中的每个系统文件都不是要加载的。
还有一种更紧密地与Quicklisp对可用系统的知识进行集成的选择。我要做的是:
sbcl --no-userinit --no-sysinit --non-interactive \
--load ~/quicklisp/setup.lisp \
--eval '(ql:quickload "drakma")' \
--eval '(ql:write-asdf-manifest-file "quicklisp-manifest.txt")'
buildapp --manifest-file quicklisp-manifest.txt --load-system drakma [the rest of your options]第一个命令确保drakma已被下载,而且Quicklisp所知道的系统索引是在quicklisp-plom.txt中。第二种方法使用该索引使用已安装的Quicklisp系统构建应用程序。
https://stackoverflow.com/questions/18917067
复制相似问题