@Voidzero

Как скомпилировать Lisp файл в exe`шник?

Как мне скомпилировать Common Lisp файл в exe`шник или .deb пакет? Какую среду разработки для этого использовать? У меня сейчас установлены Allegro CL и newLisp, пока что не могу разобраться, я только начинаю изучать Lisp.
  • Вопрос задан
  • 2893 просмотра
Пригласить эксперта
Ответы на вопрос 2
ruddy22
@ruddy22
Спасение утопающих — дело рук самих утопающих
Думаю, что приведенный список команд Вам поможет
https://www.cs.utexas.edu/users/qr/algy/allegro-co...
Ответ написан
Комментировать
@capuccio
Живой пример компиляции: пример использования лог-системы -- коротенькая программа загружающая лог-пакет и выводящая несколько лог-сообщений.
1. Идёт речь об SBCL и линукс.
2. Имеются различные способы компиляции, этот был первым, который заработал для меня.
3. Kомпилируемая программа оформляется в виде пакета с примерно таким вот asd-файлом
#+sb-core-compression
(defmethod asdf:perform ((o asdf:image-op) (c asdf:system))
  (uiop:dump-image (asdf:output-file o c) :executable t :compression t))
(defsystem "simple-log/example"
:class :package-inferred-system
:depends-on (....); usual dependences
:build-operation  "program-op"
:build-pathname "example.bin"
:entry-point "simple-log/example:main"
:description "a compilable example for simple-log"
:version 0.1
:components ((:file "example")))

4. Опция :entry-point указывает на функцию пакета (вроде "main" в C), которая будет запущена при старте.
5. Если вы хотите, чтобы бинарник был 15 мб (для простой программульки) вместо 50-60Мб, рекомендуется скомпилировать SBCL с ключом --with-sb-core-compression:
sh make.sh --with-sb-core-compression
6. См. Makefile: чтобы скомпилировать пакет, мы сначала устанавливаем его в качестве локального в quicklisp-каталог
(~/quicklisp/local-projects/simple-log в моём случае); после этого запускаем
~/local/bin/sbcl --quit --eval "(asdf:make :simple-log/example)"

где ~/local/bin/sbcl — мой собственноручно (ради --with-sb-core-compression) скомпилированный SBCL.
7. Результат компиляции будет записан в тот же каталог, где находится пакет; в моём случае это
~/quicklisp/local-projects/simple-log/example.bin
8. Да, по первому разу это сложно, но я привык.
Ну а что касается DEB-пакета, то это -- отдельная песня. Но можно из бинарников сделать deb, хоть это и не по-нашему, по-бразильскидебиановски.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы