LoginSignup
8
5

More than 5 years have passed since last update.

sbclでexeを作る

Posted at

何の記事?

今回はタイトルどおりSBCL(Steel Bank Common Lisp)で単体実行可能なexeファイルを作ろう
という記事です。

先に結論

では早速exeを作ってみます。

(load "foo.lisp") ; 必要なファイルをloadする
(sb-ext:save-lisp-and-die "foo.exe"
                          :toplevel #'main
                          :executable t)

sb-ext:save-lisp-and-dieはlispのコアイメージを書き出す関数です。
:executable tを指定した場合、出力されるファイルはsbclのランタイムとコアイメージを含みます。

これで一応exeファイルを作成することができます。

解説

sb-ext:save-lisp-and-dieにはいくつかのキーワード引数があります。

詳細についてはSBCLに公式サイトで確認できるので省きますが、
よく使いそうな引数については紹介しておきます。

;; トップレベルの関数を指定します。
;; (Cで言うとこのmain関数みたいなものです)
;; #'で関数自体を渡します。
:toplevel

;; trueならばイメージとランタイムを一緒にしたexeを出力します。
;; falseならイメージのみを出力し、ランタイムを含みません。(つまりexeにならない)
:executable

;; アプリケーションの種類を指定します。
;; :console ならば実行時にコンソールウインドウを表示します。
;; :gui ならばコンソールウインドウを表示しません。
:application-type

まとめ

さあこれらの引数を指定してexeを出力すると、出力結果を見て悶絶することになるでしょう。

ファイルサイズでかすぎッッΣ(´□`;)

簡単なものでも40MB近くのサイズになります。
まぁランタイムを含んでるので当然っちゃ当然なんですが、これもう少し小さくならないかな???

環境など

以下テストした環境。

  • OS : Windows 10 64bit
  • 処理系 : SBCL 1.2.15
8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5