Подтвердить что ты не робот

Как я могу запустить код SBCL под Unix-подобной операционной системой удобным способом?

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

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

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

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

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

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

4b9b3361

Ответ 1

(Ответа на этот вопрос David James:)

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

Используя ваш любимый редактор, откройте файл под названием 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 "[email protected]"

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

    # sbcl.run hello.fasl

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

Ответ 2

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