我已经尝试过这个示例ECL存储库asdf示例,它工作正常,但它没有任何asdf依赖项.如果我添加
:依赖(#:inferior-shell)
到example.asd然后运行已编译的独立可执行文件会出现此错误:
Condition of type: SIMPLE-PACKAGE-ERROR There exists no package with name "ASDF/DRIVER" No restarts available.
导致此错误的原因是什么,以及在ECL上处理asdf依赖项的惯用方法是什么?
编辑:对于比16.1.3更新的ECL(在开发分支中已修复),此问题已修复,因此在即将发布的版本中不需要"require"技巧.
一般来说,你采取的路径是正确的.
确保您需要ASDF:
(require 'asdf) (find-package "ASDF/DRIVER")
然后定义"ASDF/DRIVER"包.另一方面,劣质shell需要一些其他库(例如alexandria),因此您必须在ASDF中央注册表中放置它们的路径或使用Quicklisp包.
有关使用ECL构建的更多详细信息,请参见其文档.
//编辑调查后,似乎必须在程序启动时手动要求ASDF.这可能是一个错误.作为解决方法添加
:prologue-code '(require 'asdf)
到(asdf:make-build ...)独立可执行文件.一切都很好.