如何分发asdf / quicklisp依赖项以及使用Embeddable Common Lisp编译的应用程序?

时间:2015-12-03 09:26:02

标签: lisp common-lisp quicklisp asdf ecl

我试过这个例子ECL repository asdf example,它运行正常,但它没有任何asdf依赖项。如果我添加

  

:依赖(#:inferior-shell)

到example.asd然后运行编译的独立可执行文件提供错误

Condition of type: SIMPLE-PACKAGE-ERROR
There exists no package with name "ASDF/DRIVER"
No restarts available.

导致此错误的原因是什么,以及在 ECL 上处理asdf依赖关系的惯用方法是什么?

1 个答案:

答案 0 :(得分:6)

编辑:对于比16.1.3更新的ECL(在开发分支中已修复),此问题已修复,因此在即将发布的版本中不需要“require”技巧。

您采取的一般路径是正确的。

确保您需要ASDF:

(require 'asdf)
(find-package "ASDF/DRIVER")

然后定义“ASDF / DRIVER”包。另一方面,劣质shell需要一些其他库(例如亚历山大),所以你必须在ASDF中央注册表中放置它们的路径或使用Quicklisp bundles

有关使用ECL构建的更多详细信息,请参见Documentation

//编辑 经过调查,似乎必须在程序启动时手动要求ASDF。这可能是一个错误。作为解决方法添加

:prologue-code '(require 'asdf)

到(asdf:make-build ...)独立可执行文件。一切都很好。