Получить "настоящий" исполняемый файл с помощью clisp нельзя в принципе, потому что clisp -- это байт-компилятор (в отличие от всех остальных).
Как его сымитировать -- про это написано в impnotes в разделе Application Delivery.
cmucl тоже не умеет создавать стандартных ELF файлов, так что тоже
нужно писать скрипт-обертку. В sbcl эта процедура автоматизирована.
Просто так уж сложилось, что cmucl использует нестандартный формат
исполняемого файла. В принципе, используя т.н. MISC binaries в Linux
можно сделать так, чтобы такие файлы запускались как обычные. Но проще
сделать обвязку через shell. Ну или действительно использовать ecl или gcl.
Не в моде не бинарники, а раздельная компиляция. В Лиспе компиляция инкрементальная, и, соответственно, "бинарник" - это дамп памяти, содержащий как откомпилированные уже выражения, так и все данные, результаты работы программы на момент сброса дампа.
Этот подход не лучше и не хуже поздней линковки - он просто ДРУГОЙ.
насчет отношения:
Ну дает мне например заказчик задачу напиши ка мне говорит
программку чтобы с базой под постгресом она ворочала.
Значит беру lisp вместо с++ и либы сишные и пишу значит программу.
А заказчику что приносить???
p.s.
я в лиспе не силен как вы уже наверно поняли. и я раньше думал что лисп
достаточно ограничен и используется исключительно больше в теории чем
на практике. Мне вот интересно просто если бинарники не lisp-way,
то как реально на практике его можно использовать в качестве замены
того же c++, если все компиляторы для c++ генерят бинарники.
Из программы на перле тоже можно получить исполняемый файл,
но ИМХО это "костыли".
Для лиспа бинарник это тоже костыль???
хорошо.
этот core image?? его как получить то????
gcl???
p.s.
прошу не обижаться на такие простые вопросы просто хочу знать - если
где-то на просторах www есть на них ответы - ткните.
практически каждая имплементация common lisp имеет функциональность для
сброса текущего дампа в на внешнее хранилище, с дальнейшей возможностью
его подсоса ..
пример с cmucl:
$ lisp
* (boundp 'test-ok)
NIL
* (setq test-ok 1)
Warning: Declaring TEST-OK special.
1
* (save-lisp "test.core")
[Doing purification: Done.]
..
Done
$ lisp -core test.core
* test-ok
1
Философский ответ: он тебе что -- "Hello, world" заказал? Нет? Тогда ты ему принесёшь не только бинарник -- будь то хоть Цэ, хоть ++, чорт лысый. Ты ему принесёшь бинарник, парочку .dll, парочку скриптов, а может, ещё парочку .sql файлов, а может, дамп базы или ещё чего-нить.
Конкретнее -- видимо, надо ставить ему Лисп (возможно, урезанный, без средств редактирования) и батничек для запуска. Ты серьёзно думаешь, что заказчик будет на типы файлов смотреть?
У явы много недостатков, но виртуальная машина к ним не относится
А что тебе не нравится? Ну будет у тебя скрипт запускать программу, а не бинарник - какая разница?
Не нравится имеено тем что надо будет таскать еще лисп с собой.
Хотя в принципе Смоляное Чучелко правильно сказал что в более-менее
сложной программе даже в с++ одним экзешником не обойтись.
Ну, с SBCL тем же таскать надо всего то два файла - сам бинарник рантайма sbcl и core. При желании можно и сшить в один бинарник, но это будет типа извращение...