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



我已经尝试过这个示例ECL存储库asdf示例,它运行良好,但没有任何asdf依赖关系。如果我添加

:取决于(#:下壳)

例如,asd然后运行编译后的独立可执行文件会产生错误

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

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

EDIT:这个问题在更新于16.1.3的ECL中得到了解决(在开发分支中得到了修复),因此在即将发布的版本中不需要"require"技巧。

总的来说,你们所走的路是正确的。

确保您已要求ASDF:

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

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

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

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

:prologue-code '(require 'asdf)

到(asdf:makebuild…)以获得独立的可执行文件。那么一切都很好。

相关内容

  • 没有找到相关文章

最新更新