2

我已经尝试过这个示例ECL 存储库 asdf 示例,它工作正常,但它没有任何 asdf 依赖项。如果我添加

:depends-on (#:inferior-shell)

到 example.asd 然后运行编译的独立可执行文件出现此错误

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

是什么导致了这个错误,处理 asdf 对ECL的依赖的惯用方法是什么?

4

1 回答 1

6

编辑:此问题已针对 16.1.3 之后的 ECL 进行了修复(已在开发分支中修复),因此在即将发布的版本中不需要任何“要求”技巧。

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

确保您需要 ASDF:

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

然后定义“ASDF/DRIVER”包。另一方面,inferior-shell 需要一些其他库(例如,alexandria),因此您必须将它们的路径放在 ASDF 中央注册表中或使用Quicklisp bundles

有关使用 ECL 构建的更多详细信息,请参阅其文档

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

:prologue-code '(require 'asdf)

到 (asdf:make-build ...) 以获得独立的可执行文件。那时一切正常。

于 2015-12-03T09:37:32.053 回答