Сведения о вопросе

DUNKER

03:47, 26th August, 2020

Теги

build   lisp   common-lisp   clisp    

Lisp исполняемый файл

Просмотров: 454   Ответов: 6

Я только начал изучать Lisp и не могу понять, как скомпилировать и связать код lisp с исполняемым файлом.

Я использую clisp и clisp -c для получения двух файлов:

  • .fas
  • .lib

Что мне делать дальше, чтобы получить исполняемый файл?



  Сведения об ответе

SSESION

16:15, 12th August, 2020

Я действительно пытался сделать это сегодня, и я обнаружил, что ввод этого в CLisp REPL работал:

(EXT:SAVEINITMEM "executable.exe"
                 :QUIET t
                 :INIT-FUNCTION 'main
                 :EXECUTABLE t
                 :NORC t)

где main-это имя функции, которую вы хотите вызвать при запуске программы, :QUIET t подавляет баннер запуска, а :EXECUTABLE t создает собственный исполняемый файл.

Это также может быть полезно для вызова

(EXT:EXIT)

в конце вашей основной функции, чтобы остановить пользователя от получения интерактивного приглашения lisp, когда программа будет завершена.

EDIT: читая документацию, вы также можете добавить :NORC t ( ссылка для чтения ). Это подавляет загрузку файла RC (например, ~/.clisprc.lisp ).


  Сведения об ответе

P_S_S

03:06, 18th August, 2020

Это Lisp FAQ (слегка адаптированный):

*** Как сделать исполняемый файл из моей программы?

Это зависит от вашей реализации; вам нужно будет проконсультироваться с вашим документация поставщика.

  • С ECL и GCL стандартный процесс компиляции будет создайте собственный исполняемый файл.

  • С помощью параметра LispWorks см. раздел Руководство пользователя по доставке в разделе документация.

  • Вместе с Allegro Common Lisp смотрите раздел поставки руководство.

  • и т.д...

Однако классический способ взаимодействия с обычными программами Lisp не включает автономные исполняемые файлы. Давайте рассмотрим это во время два этапа процесса разработки: программирование и поставка.

Фаза программирования: общая разработка Lisp имеет больше инкрементальное чувство, чем это обычно бывает в пакетных языках, где edit-compile-link цикл является общим. Разработчик CL будет работать просто испытания и переходные взаимодействия с окружающей средой на REPL (или Read-Eval-Print-Loop, также известный как слушатель ). Исходный код сохраняется в файлах, а сборка / загрузка зависимости между исходными файлами записываются в системном описании объект, такой как ASDF (который играет аналогичную роль, чтобы сделать в edit-compile-link системы). Средство описания системы обеспечивает команды для построения системы (и только для перекомпиляции файлов, чьи зависимости изменились с момента последней сборки), а для загрузки система в память.

Наиболее распространенные реализации Lisp также предоставляют механизм "save-world" это позволяет сохранить моментальный снимок текущего изображения lisp, в форме,которая впоследствии может быть перезапущена. Общая среда Lisp как правило, состоит из относительно небольшой исполняемой среды выполнения и увеличенный файл изображения, содержащий состояние мира lisp. Обычное явление использование этого средства состоит в том, чтобы сбросить настроенное изображение, содержащее все построить инструменты и библиотеки, используемые в данном проекте, в порядке чтобы сократить время запуска. Например, этот объект доступен в разделе имя EXT:SAVE-LISP в CMUCL, SB-EXT:SAVE-LISP-AND-DIE в SBCL, EXT:SAVEINITMEM в CLISP и CCL:SAVE-APPLICATION в OpenMCL. Большинство из этих реализаций могут предварять среду выполнения до изображение, тем самым делая его исполняемым.

Доставка приложений: вместо создания одного исполняемого файла файл для приложения, Lisp разработчики обычно сохраняют изображение содержащее их приложение, и доставить его клиентам вместе с среда выполнения и, возможно, оболочка shell-script, которая вызывает среда выполнения с образом приложения. На платформах Windows это может быть скрыто от пользователя с помощью инструмента типа click-o-matic InstallShield.


  Сведения об ответе

прога

09:41, 20th August, 2020

CLiki также имеет хороший ответ: создание исполняемых файлов


  Сведения об ответе

baggs

05:57, 19th August, 2020

Взгляните на официальную домашнюю страницу clisp. Существует FAQ, который отвечает на этот вопрос.

http://clisp.cons.org/impnotes/faq.html#вопросы и ответы-экзек


  Сведения об ответе

qwerty101

17:22, 28th August, 2020

Для портативного способа сделать это я рекомендую roswell .

Для любой поддерживаемой реализации вы можете создать сценарии lisp для запуска программы, которая может быть выполнена переносимым способом с помощью ros , который может быть использован в строке hash-bang аналогично программе python или ruby.

Для SBCL и CCL roswell также может создавать двоичные исполняемые файлы с ros dump executable .


  Сведения об ответе

SSESION

05:07, 21st August, 2020

Я знаю, что это старый вопрос, но коду Lisp, который я рассматриваю, 25 лет :-)

Я не мог заставить компиляцию работать с clisp на Windows 10. Тем не менее, это сработало для меня с gcl .

Если мой файл lisp является jugs2.lisp,

gcl -compile jugs2.lisp

Это создает файл jugs2.o, если файл jugs2.lisp не содержит ошибок.

Запустите gcl без параметров для запуска интерпретатора lisp:

gcl

Загрузите файл .o:

(load "jugs2.o")

Чтобы создать EXE:

(si:save-system "jugs2")

Когда EXE запускается, ему требуется DLL oncrpc.dll ; это находится в папке <gcl install folder>\lib\gcl-2.6.1\unixport , которую создает gcl.bat.

При запуске он показывает среду lisp, вызов (main) для запуска главной функции (главный).


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться