当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何分发asdf/quicklisp依赖项以及使用EmbeddableCommonLisp编译的应用程序?》经验,为你挑选了1个好方法。

我已经尝试过这个示例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依赖项的惯用方法是什么?



1> Daniel Kochm..:

编辑:对于比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 ...)独立可执行文件.一切都很好.


不,当您编译项目时,所有内容都在可执行文件中编译.但显然所有依赖项都需要在编译时访问.
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有