Как мне удобно запустить код SBCL в Unix-подобной операционной системе? - PullRequest
22 голосов
/ 29 января 2012

(Дэвид Джеймс написал вопрос и ответ. Я отредактирую его, чтобы он соответствовал стандартам Stackoverflow.)

Используя SBCL, вы можете компилировать код Lisp в машинный код.

Как и Java, .net, C ++ и даже C, вам потребуется среда выполнения. Таким образом, есть два способа компилировать код Common Lisp.

Сначала создайте огромные двоичные файлы, что объясняется в документации SBCL. На целевой машине не требуется SBCL.

Другой способ более гибкий: создание машинного кода в формате fasl (FASt Load). Среда выполнения SBCL необходима на целевой машине.

Как работает второй способ в Unix-подобной операционной системе?

Ответы [ 2 ]

25 голосов
/ 29 января 2012

(Ответ от David James:)

Мы собираемся сделать две команды в нашей системе: одну для пакетной компиляции кода Lisp, а другую для легкого запуска кода Lisp:

Использование вашегоВ любимом редакторе откройте файл с именем sbcl.compile.Содержимое должно быть:

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

Теперь для компиляции файлов Lisp используйте:

    # sbcl.compile hello.lisp

. Это создаст файл hello.fasl.

Теперь, чтобы легко запустить этифайлы, мы создаем новую команду.Используя ваш любимый редактор, откройте файл с именем sbcl.run.Содержимое должно быть:

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

Теперь вы можете вызвать sbcl.run hello.fasl для запуска собственного кода.

    # sbcl.run hello.fasl

Подробности описаны в руководстве по SBCL: Запуск SBCL

3 голосов
/ 30 января 2012

Другой вариант - добавить во время выполнения все пакеты / функции / платформы, которые вы обычно используете, а затем сохранить это состояние как новый файл ядра и использовать его в качестве основного ядра по умолчанию при продолжении разработки.Я обычно нахожу, что это больше проблем, чем они того стоят, тем более что lisp может сохранять состояние в основном файле в стиле VM.Я просто постепенно обновляю ядро ​​по мере развития.И пересоберите / обновите ядро, используя GNU Make.

...