如何将 buildapp 与 Quicklisp 结合使用

2023-11-24

我想使用 buildapp 来制作作为给出的curl-lisp可执行文件example:

buildapp --output lisp-curl --asdf-path ~/src/clbuild/systems/ \
    --load-system drakma \
    --eval '(defun main (args) (write-string (drakma:http-request (second args))))' \
    --entry main

这绝对行不通,因为我没有路径“~/src/c build/systems/”,因为我使用quicklisp,我的系统应该位于“~/quicklisp/dists/quicklisp/software”,但是当我执行时:

buildapp --output lisp-curl  \
         --asdf-path ~/quicklisp/dists/quicklisp/software      \
         --load-system drakma     \
         --eval '(defun main (args) (write-string (drakma:http-request (second args))))'   \
         --entry main

; file: /home/simkoc/dumper-YKYna1b3.lisp
; in: DEFUN DUMP-FILE-DEBUGGER
;     (QUIT :UNIX-STATUS 111)
; 
; caught STYLE-WARNING:
;   SB-EXT:QUIT has been deprecated as of SBCL 1.0.56.55. Use SB-EXT:EXIT or
;   SB-THREAD:ABORT-THREAD instead.
;   
;   In future SBCL versions SB-EXT:QUIT will signal a full warning at compile-time.
; 
; compilation unit finished
;   caught 1 STYLE-WARNING condition
Fatal MISSING-COMPONENT:
  Component "drakma" not found

This问题的答案已经暗示 Quicklisp 能够以 buildapp 能够检索它的方式导出其系统,但遗憾的是没有详细说明。

我也尝试离开--asdf-path出,因为 SBCL(启动时)已经能够使用加载 Drakma(require 'drakma) or (asdf:load-system "drakma")。还使用--require代替--load-system不会做这笔交易。

因此:我如何将 buildapp 与 Quicklisp 结合使用来制作具有所需系统的可执行文件(我只关心缺失的组件部分)


如果 Drakma 已经安装在 Quicklisp 中,我认为如果您使用,您的示例将会工作--asdf-tree代替--asdf-path。但是使用 Quicklisp 目录作为树可能会导致一些麻烦,因为并非树中的每个系统文件都需要加载。

还有另一个选项可以与 Quicklisp 的可用系统知识更紧密地结合。这就是我所做的:

sbcl --no-userinit --no-sysinit --non-interactive \
     --load ~/quicklisp/setup.lisp \
     --eval '(ql:quickload "drakma")' \
     --eval '(ql:write-asdf-manifest-file "quicklisp-manifest.txt")'

buildapp --manifest-file quicklisp-manifest.txt --load-system drakma [the rest of your options]

第一个命令确保已下载 drakma,并且 Quicklisp 知道的系统索引位于 Quicklisp-manifest.txt 中。第二个使用该索引来使用已安装的 Quicklisp 系统构建应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 buildapp 与 Quicklisp 结合使用 的相关文章

  • Common Lisp 中的 comma-comma-at

    我对 comma comma at 的作用感到困惑 使用 comma comma at 的示例如下定义 Lisp 宏时是否需要使用双引号 双逗号 https stackoverflow com questions 17938242 is t
  • 在 Common Lisp 中替换列表中的项目?

    我有一个事物列表 我称之为 L 一个索引 N 和一个新事物 NEW 如果我想用 NEW 替换 L 中 N 中的内容 最好的方法是什么 我是否应该获取到 N 的子列表以及从 N 到列表末尾的子列表 然后使用列表将第一部分 NEW 和最后一部分
  • Common Lisp 中的动态和词法变量

    我正在读 Peter Seibel 的 Practical Common Lisp 一书 在第 6 章 变量 部分中 词法变量和闭包 和 动态 又名特殊变量 http www gigamonkeys com book variables h
  • 调用另一个 lisp 文件中的函数

    我必须用 Lisp 写一个游戏 为了清楚起见 我想将代码拆分到不同的 lisp 文件中 如何从另一个文件中的函数中调用函数 例如 file1 lisp 有一个名为 function1 的函数 file2 lisp 有一个名为 functio
  • Common Lisp:如何使用条件拼接在宏中构建列表?

    我们假设 defmacro testing optional var list this is when consp var a list 当被调用时 gt testing 2 THIS IS gt testing list 1 2 THI
  • Common LISP 和 Stack 中的数字类型边界在 GHCI 中流动

    第一个问题 Common LISP 和 Haskell 的新手 请友善 我在 Common LISP 中有一个函数 下面的代码 旨在判断三角形的面积是否是整数 整数 defun area int p a b c let s a b c 2
  • 为什么 Common Lisp 中冒号位于变量之前

    Common Lisp 中变量前面的冒号语法是什么意思 我见过这样的程序 我将在这里从大量函数中展示一些示例代码 defun expand successorf node mapcar lambda action state cost le
  • SBCL:将 Hunchentoot 应用程序部署为可执行文件

    我开始使用 SBCL Common Lisp 并希望使用 Hunchentoot 开发一个小型 Web 应用程序 为了便于部署 我计划使用 sb ext save lisp and die 将所有内容保存在二进制文件中 因为我可以忍受大输出
  • 更改列表的第 n 个元素

    我想更改列表的第 n 个元素并返回一个新列表 我想到了三个相当不优雅的解决方案 defun set nth1 list n value let list2 copy seq list setf elt list2 n value list2
  • LISP - 小数点后的数字

    有谁知道如何在 Lisp 中指定浮点数小数点后的位数 假设我在 REPL 上打印此命令 CL USER 3 gt format t 15f float 1 7 I get 0 142857150000000 但是该数字四舍五入到小数点后第
  • Lisp 内部引用工作

    口齿不清是如何做到的quote内部工作 例如 quote 1 1 2 似乎相当于 list 1 list 1 2 这意味着它是如何递归地象征 Head 值的 这个功能是内置的吗 Run equal quote 1 1 2 list 1 li
  • 如何在类Unix操作系统下方便的运行SBCL代码?

    David James 写了问题和答案 我将对其进行编辑以符合 Stackoverflow 标准 使用 SBCL 您可以将 Lisp 代码编译为机器代码 像 Java net C 甚至 C 一样 您将需要运行时 所以有两种方法来编译 Com
  • CLISP - 反转简单列表

    我必须反转简单 单维 列表的元素 我知道有一个内置的反向函数 但我不能用它来做这个 这是我的尝试 defun LISTREVERSE LISTR cond lt length LISTR 2 LISTR listr is 1 atom or
  • 在 Parenscript 中使用 regex(正则表达式)

    我正在尝试 Parenscript 在尝试使用正则表达式函数时 我得到了意外的输出 例如 参考手册 https common lisp net project parenscript reference html shows regex f
  • 将列表传播到父代 sexp 中

    在任何 lisp 中是否有一种形式可以在父 sexp 中 传播 列表 喜欢 spread 1 2 3 gt 1 2 3 有两种方法可以做到这一点 哪个更好取决于您最终想要什么 一般来说 您可以使用 inside 反引号 表格如下 被评估以生
  • 用通用函数替换普通函数

    我想将 elt nth 和 mapcar 等名称与我正在原型设计的新数据结构一起使用 但这些名称指定普通函数 因此我认为需要将其重新定义为通用函数 重新定义这些名称可能是一种不好的形式 有没有办法告诉 defgeneric 不要生成程序错误
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • gensym 在 Lisp 中做什么?

    我听到一些同学谈论他们如何使用该功能gensym为此 我问他们它做了什么 甚至在网上查了一下 但我真的无法理解这个函数的作用是什么两者都不为什么或何时最好使用它 特别是 我对它在 Lisp 中的作用更感兴趣 谢谢你们 独特且未被拘禁的符号
  • 为什么在 emacs-lisp 中的函数参数之前使用#'?

    我熟悉 Emacs Lisp 但不熟悉 Common 或任何其他 Lisp 一些 Lisp 程序员建议 例如emacs 的基本功能 https stackoverflow com questions 17076646 a basic fun
  • 从 CCL 检索(加载)源代码?

    我打了电话 load code lisp 用CCL 然后不小心删除了code lisp 有什么办法可以找回源代码吗 CCL 在内存中是否有它 这是一个非常特殊的功能 这里只为克洛祖尔CL 该代码在其他地方不起作用 这在 CCL IDE 中对

随机推荐