quicklisp で (ql:quickload :cl-ppcre) した場合 実行形式をつくるには、どうするとスマートなんだろう。
環境
Clozure Cl (macport 64bit version)
ccl64 --version
Version 1.9 (DarwinX8664)
quickload していないとき
clozure clで こんなファイルをつくって
(defun hello-world-2 () (format t "Hello, world!")) (ccl:save-application "hello.x" ;; 実行ファイル名 :toplevel-function #'hello-world-2 ;; 実行する関数 :prepend-kernel t)
こんなかんじで、実行ファイルが作成できる。
ccl64 --no-init --load hello-world2.lisp ./hello.x
実行すると、こうなる
Hello, world!
quickload したとき
では、quicklisp で (ql:quickload :cl-ppcre) した場合はどうなるのだろう。
失敗例
(ql:quickload :cl-ppcre) ;; quicklispで パッケージを読み込む (defun hello-world-2 () (format t "Hello, world!")) (ccl:save-application "hello.x" :toplevel-function #'hello-world-2 :prepend-kernel t)
ccl64 --no-init --load hello-world2.lisp
qlってなんだよっていわれてしまう。 quickloadの設定がClozure CLの設定ファイルに書いてあるのだろう。
成功例1
ccl64 --load hello-world2.lisp
こうすると、実行ファイルができる。
その他の成功例
または、slimeでccl:save-applicationを書いたバッファをC-cC-kすると、実行ファイルができるんだけど、swnkと接続が切れてしまう。
もしくは、ccl:save-applicationを書いていないバッファをslimeでC-cC-kしてから、REPLのプロンプトで
(ccl:save-application "hello.x" :toplevel-function #'hello-world-2 :prepend-kernel t)
と入力すると、
; Evaluation aborted on #<PROCESS-RESET #x3020012A77BD>.
と表示されてから、やっぱりswnkと接続が切れてしまう。
swnkと接続が切れてしまったらM-x slimeすればもとどおりなんだけど、これでいいのだろうか?