Я узнал схему и быстро освоил ее, а затем сделал проект в нем просто отлично. Буквально потребовалось несколько дней, чтобы закончить. Теперь я пытаюсь выучить общий lisp, чтобы почувствовать это, и теперь я просто действительно борется с попыткой узнать asdf. Похоже, это общеизвестно, как использовать его в библиотеках, но я сбив с толку. Я думаю, это потому, что большинство программ lisp создаются и выполняются внутри реплики, потому что все работает нормально. Это когда я пытаюсь скомпилировать его в исполняемый файл, где я теряю свое место.
Есть ли кто-нибудь, кто может дать мне какие-либо советы по этому вопросу или указать мне учебник? Я действительно хочу, чтобы сделать исполняемый файл, чтобы дать людям, не объясняя, как установить sbcl и (требуется), затем запустить его. Я просто хочу научиться делать что-то существенное в lisp, которое мне не удалось сделать с помощью схемы.
Я предполагаю, что могу использовать схему и использовать ffi, чтобы получить библиотеки c, но у меня нет опыта работы с c. Я просто веб-разработчик, изучающий lisp по моим личным причинам. Конечно, изучение некоторых c и ffi может не занять столько времени, сколько это ха-ха.
ThanksБорьба с общими библиотеками lisp
ответ
Я действительно хочу, чтобы иметь возможность сделать исполняемый файл, чтобы дать людям без того, чтобы объяснить, как установить SBCL и (требуется) она затем запустить его.
Для создания автономного исполняемого файла вам не нужен ASDF. Большинство реализаций предоставляют средства для сохранения исполняемого изображения, но как это сделать (и если оно вообще будет предоставлено) не упоминается в стандарте.
В общем, вы загрузите свой код в свое запущенное изображение и затем «свалите» это изображение.
В SBCL, например, вы использовали бы sb-ext:save-lisp-and-die; CCL имеет ccl:save-application. Вам нужно будет посмотреть в документации по реализации, чтобы узнать, как это сделать.
Я не SBCL здесь в данный момент, но это минимальный пример должен работать (непроверенные):
(defun do-it() (format t "hello world~%"))
(sb-ext:save-lisp-and-die "hello" :toplevel #'do-it :executable t)
Это рабочий пример использования CCL:
Welcome to Clozure Common Lisp Version 1.6-dev-r14287M-trunk (LinuxX8632)!
? (defun do-it() (format t "hello world~%"))
DO-IT
? (ccl:save-application "hello" :toplevel-function #'do-it :prepend-kernel t)
[[email protected] ~/build/ccl]% ./hello
hello world
Эти исполняемые образы может быть довольно большого размера, если только ваша реализация не обеспечивает что-то вроде дерева-шейкера, но я не думаю, что это должно быть проблемой в наши дни.
Подробный пример для clisp можно найти в another SO question about this topic.
Это ответ на ваш вопрос? Я не совсем уверен, правильно ли понял, потому что вы сказали, что все работает от REPL. Если вы можете загрузить свои библиотеки в REPL, то, что я описал выше, это способ получить автономный исполняемый файл, который затем вы можете распространять среди своих пользователей. Если вы хотите, чтобы у них был нормальный REPL, но с вашими уже существующими библиотеками, просто опустите аргументы ключевого слова: toplevel (-function). – danlei
Это не совсем то, что вы просили, но это может помочь.
Я никогда не мог получить ASDF, чтобы работать очень хорошо. Вместо этого кто-то указал мне на clbuild, что немного отличается от аналогичной проблемы. До сих пор это работало очень хорошо.
- 1. Несколько проектов с общими библиотеками
- 2. Работа с общими/полезными библиотеками
- 3. Компиляция проблем с общими библиотеками
- 4. Управление общими библиотеками в AngularJs
- 5. g ++ проблемы с общими библиотеками и libpthread.so
- 6. Упаковка приложения qt, скомпилированного с общими библиотеками
- 7. Соответствие внешних функций с общими библиотеками
- 8. Проблема PyPy с общими библиотеками libffi.so.5
- 9. Сложный Makefile с Python и общими библиотеками
- 10. Как создать пример vtkLocal с общими библиотеками?
- 11. Catch-22 ситуация с общими макросами Lisp
- 12. Отношения между исполняемыми файлами, статическими библиотеками и общими библиотеками
- 13. VS-Android создает «неправильные» имена при связывании с общими библиотеками
- 14. Как бороться с выпущенными общими библиотеками в .NET?
- 15. build R из источника: не удалось связаться с общими библиотеками
- 16. Связывание с общими библиотеками, которые вызывают другие разделяемые библиотеки
- 17. Управление источником для нескольких проектов/решений с общими библиотеками
- 18. Лучшая практика обмена общими библиотеками между решениями в .NET.
- 19. Является ли это хорошим подходом к управлению общими библиотеками?
- 20. Управление общими библиотеками .net в небольшой компании (50+ разработчиков)
- 21. Почему некоторые приложения поставляются с разделяемыми библиотеками?
- 22. Возможно ли оптимизация с помощью профиля с общими библиотеками в gcc?
- 23. TFS 2010 - как следует использовать решения VS с общими библиотеками в «командных проектах»?
- 24. Где я могу расположить свои репозитории Git для проектов с общими библиотеками?
- 25. Программа C++ с общими библиотеками Dlib чрезвычайно медленна на Ubuntu 14.04
- 26. Борьба с учебником инструктора
- 27. Борьба с синтаксисом alignas
- 28. Борьба с проверкой PHP
- 29. Борьба с boost :: python
- 30. Борьба с массивом json
Я хотел бы, чтобы помочь вам и писать ответы на вопросы о comp.lang.lisp. Неужели я не отвечаю достаточно быстро? – Xach
Нет, lol. Мне казалось, что я держал тебя как линию жизни, я боялся, что ты сможешь заняться, и я занял бы слишком много твоего времени. Итак, я разместил здесь, чтобы узнать, может ли кто-нибудь еще участвовать в этом, возможно, не на comp.lang.lisp. – Isaiah