我已经尝试过这个示例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…)以获得独立的可执行文件。那么一切都很好。