Scoop の SBCL を使用する

2021-05-19T23:45

Scoop で SBCL をインストールしても、sbcl はコアファイルが変なところにあると思っていて探しても見つからないので、 実行できない。

変なところっていうか、インストーラーが既定のパスにしているところなので、変ではないんだけども……。

とりあえず、新しくコアファイルを $HOME/.sbcl に作成することにする。

既定のところに Scoop をインストールしていれば、以下のようなスクリプトでコアファイルを作成できるはず:

[ ! -d $HOME/.sbcl ] && mkdir -p $HOME/.sbcl

sbcl --core /c/ProgramData/Scoop/apps/sbcl/current/sbcl.core --noinform --no-print --no-userinit <<EOF
; loading asdf and asdf-install library
;(require :asdf)
;(require :asdf-install)

; dumping image
(save-lisp-and-die
 (merge-pathnames ".sbcl/sbcl.core" (user-homedir-pathname))
 :purify t)
EOF

これでコアファイルはできたので、以下のようなハローワールド系コードを実行してみよう:

(write-line "Hello, World!")

だが、sbcl は C:/Program Files/sbcl/ に入っているコアファイルを見てしまう。

$ sbcl —script ./hello.lisp fatal error encountered in SBCL pid 20796(tid 00000000001D68F0): can’t find core file at C:Program Files/sbcl/lib/sbcl//sbcl.core

なので、 --core オプションを指定して先ほど作成したコアファイルを見るようにしてみるとうまくいく。

$ sbcl —core $HOME/.sbcl/sbcl.core —script ./hello.lisp Hello, World!

読み込むコアファイルを設定ファイルで指定できれば良いのだが……。

SBCL_HOME の指定

調べてみると、 SBCL_HOME という環境変数を指定すれば良いようだ。

上記の例で言えば、以下のようにすれば、 --core オプションの指定が不必要になる:

export SBCL_HOME=$HOME/.sbcl

$ sbcl —script ./hello.lisp Hello, World!

参考

うぃーくりー・あんだーわーるど・にゅーす

テクノロジー、サイエンス、そして不思議な出来事についてのブログです。

Quick Links

Follow Us

© 2025 うぃーくりー・あんだーわーるど・にゅーす. All rights reserved.