Lisp 如何在类Unix操作系统下方便地运行SBCL代码?

Lisp 如何在类Unix操作系统下方便地运行SBCL代码?,lisp,common-lisp,sbcl,Lisp,Common Lisp,Sbcl,(大卫·詹姆斯(David James)写下了问题和答案。我将对其进行编辑以符合Stackoverflow标准。) 使用SBCL可以将Lisp代码编译为机器代码 像java、.net、C++和c一样,你需要运行时。因此,有两种方法可以编译公共Lisp代码 首先是制作庞大的二进制文件,这在SBCL文档中有解释。目标机器上不需要SBCL 另一种方法是更灵活的方法,即以fasl(快速加载)格式创建机器代码。目标计算机上需要SBCL运行时 第二种方法在类似Unix的操作系统下如何工作?(大卫·詹姆斯的回

(大卫·詹姆斯(David James)写下了问题和答案。我将对其进行编辑以符合Stackoverflow标准。)

使用SBCL可以将Lisp代码编译为机器代码

像java、.net、C++和c一样,你需要运行时。因此,有两种方法可以编译公共Lisp代码

首先是制作庞大的二进制文件,这在SBCL文档中有解释。目标机器上不需要SBCL

另一种方法是更灵活的方法,即以fasl(快速加载)格式创建机器代码。目标计算机上需要SBCL运行时

第二种方法在类似Unix的操作系统下如何工作?

(大卫·詹姆斯的回答:)

我们将在系统中生成两个命令:一个用于批量编译Lisp代码,另一个用于轻松运行Lisp代码:

使用您喜爱的编辑器,打开名为
sbcl.compile的文件。内容应为:

    #!/bin/bash
    sbcl --noinform --eval "(compile-file \"$1\")" --eval "(quit)" > /dev/null
    #!/bin/bash
    sbcl --noinform --load "$1" --quit --end-toplevel-options "$@"
现在要编译Lisp文件,请使用:

    # sbcl.compile hello.lisp
这将创建一个
hello.fasl
文件

现在,为了方便地运行这些文件,我们创建了一个新命令。使用您喜爱的编辑器打开名为
sbcl.run的文件。内容应为:

    #!/bin/bash
    sbcl --noinform --eval "(compile-file \"$1\")" --eval "(quit)" > /dev/null
    #!/bin/bash
    sbcl --noinform --load "$1" --quit --end-toplevel-options "$@"
现在您可以调用
sbcl.runhello.fasl
来运行本机代码

    # sbcl.run hello.fasl

SBCL手册中描述了详细信息:

另一个选项是将您常用的所有包/函数/框架添加到运行时,然后将此状态保存为新的核心文件,并在继续开发时将其用作默认核心。我通常觉得FASL的麻烦比它们的价值还多,特别是因为lisp能够将状态保存在VM风格的核心文件中。我只是在开发过程中不断更新核心。并使用GNU Make重建/更新核心

你可以提供你已经知道的答案。但是,请将您的问题表述为问题,并在回答部分提供答案。请参阅以了解更多详细信息。由于我的声誉仍然很低,我无法提供答案。很高兴看到您如何开始询问lisp。。。使用括号。这对我不适用。第一个脚本
sbcl.compile',生成一个fasl,但第二个脚本在到达READ-EVAL-PRINT循环之前给出了
sh sbcl.run bar.fasl致命错误:错误的顶层选项:“bar.fasl”`。出于开发目的,您只需
sbcl--script source.lisp