Живой пример компиляции:
пример использования лог-системы -- коротенькая программа загружающая лог-пакет и выводящая несколько лог-сообщений.
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, хоть это и не по-нашему, по-
бразильскидебиановски.