Lisp 如何在类Unix操作系统下方便地运行SBCL代码?
(大卫·詹姆斯(David James)写下了问题和答案。我将对其进行编辑以符合Stackoverflow标准。) 使用SBCL可以将Lisp代码编译为机器代码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的操作系统下如何工作?(大卫·詹姆斯的回
像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
。