Регистрация | Войти
Lisp — программируемый язык программирования

Создание исполняемых файлов

(перевод статьи Creating Executables взятой с http://www.cliki.net)

Новички в Lisp часто спрашивают: как создать исполняемый файл(executable) из Lisp программы.

cl-launch - это утилита, позволяющая легко запускать Lisp программы из командной оболочки UNIX. Смотрите также ShellScripting. Buildapp - это подобная cl-launch утилита, но специфичная для SBCL.

Создание самодостаточных приложений(stand-alone executables) не является основной задачей Lisp'а, в отличие от С-подобных языков. Lisp разработка гораздо более интерактивна. Функции и определения классов, обычно, компилируются и встраиваются в Lisp окружение в тот же момент, когда их описание написано. Из REPL'а можно сразу же изменить переменные Lisp окружения или вызвать из него функции. "Программы" в Lisp запускаются, как и все остальное, посредством вызова функции.

Когда система готова к выпуску, классический подход - загрузить все скомпилированные описания в Lisp окружение и создать его "дамп" в виде образа на диске, тогда вызвать "запускающую функцию" означает запустить приложение.

Формат такого образа зависит от реализации Lisp'а. Это, однако, мало отличается от С-приложений, требующих специфичных для платформы динамических библиотек.

Метод создания такого образа зависит от реализации:

Альтернативный вариант - создание образа, включающего не только систему, но и реализацию Lisp. Подобный образ, как правило, больше чем бинарные файлы C-программ, т.к. реализация Lisp'а, как правило, содержит отладчик, компилятор и полный набор необходимых библиотек.

Lispbuilder wiki - здесь можно найти учебник по этой теме.

"Tree-shaking"("утряска дерева", отделение программы от lisp-системы), может уменьшить размер исполняемого модуля, но сильно снижает гибкость. Компилятор и отладчик удобны для интерактивной и удаленной модификации системы, запущенной на клиентской машине. Также, компилятор используется в некоторых реализациях в неожиданных местах, например, в реализации CLOS. Т.о. использование tree-shaking как правило не практично.

@2009-2013 lisper.ru