本文介绍了如何以一种方便的方式在类似Unix的操作系统下运行SBCL代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(David James都写了问题和答案.我将其编辑为符合Stackoverflow标准.)

(David James both wrote the question and an answer. I'll edit it to conform to Stackoverflow standards.)

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

Using SBCL you can compile Lisp code to machine code.

像Java,.net,C ++甚至C一样,您将需要运行时.因此,有两种方法可以编译Common Lisp代码.

Like Java, .net, C++ and even C you will need the runtime. So there are two ways to compile Common Lisp code.

首先是制作巨大的二进制文件,这在SBCL文档中有所说明.在目标计算机上不需要SBCL.

First is to make huge binaries which is explained in SBCL documentation. No SBCL needed on target machine.

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

The other way is a more flexible one, which is to create machine code in a fasl (FASt Load) format. The SBCL runtime is needed on the target machine.

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

How does the second way work under a Unix-like operating system?

推荐答案

(大卫·詹姆斯回答:)

(Answer by David James:)

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

We are going to make two commands in our system: one for batch compiling Lisp code and the other for easily running Lisp code:

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

Using your favorite editor, open a file called sbcl.compile. The content should be:

    #!/bin/bash
    sbcl --noinform --eval "(compile-file \"$1\")" --eval "(quit)" > /dev/null

现在要编译Lisp文件,请使用:

Now to compile Lisp files use:

    # sbcl.compile hello.lisp

这将创建一个hello.fasl文件.

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

Now to easily run these files, we create a new command. Using your favorite editor open a file called sbcl.run. The content should be:

    #!/bin/bash
    sbcl --noinform --load "$1" --quit --end-toplevel-options "$@"

现在,您可以调用sbcl.run hello.fasl来运行本机代码.

Now you may invoke sbcl.run hello.fasl to run the native code.

    # sbcl.run hello.fasl

详细信息在SBCL手册中进行了描述:启动SBCL

Details are described in the SBCL manual: Starting SBCL

这篇关于如何以一种方便的方式在类似Unix的操作系统下运行SBCL代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 10:43