Slackware

Steel Bank Common Lisp

ページ作成日

公式Webサイト

Steel Bank Common Lisp

概要

SBCL(Steel Bank Common Lisp)は、高性能なCommon Lisp実装です。
CMUCL(Carnegie Mellon University Common Lisp)からフォークしたプロジェクトで、ANSI Common Lisp標準に準拠しています。
ネイティブコードコンパイラ、デバッガ、プロファイラ、コードカバレッジツールなど、充実した開発環境を提供します。

「Steel Bank」という名前は、Carnegie Mellon大学の名前の由来となった2人の人物にちなんでいます。
鉄鋼王アンドリュー・カーネギー(Carnegie)から「Steel」、銀行家アンドリュー・メロン(Mellon)から「Bank」を取っています。

CMUCLが32ビット版のみの提供であるのに対し、SBCLはx86-64を含む多くのアーキテクチャに対応しており、64ビット環境でも利用できます。

パッケージの作成(バイナリ版)

SBCLは公式サイトでLinux向けのバイナリが配布されています。 これをSlackwareパッケージ化する手順を説明します。

1. バイナリのダウンロード

まず、ダウンロード用のディレクトリを作成し、バイナリをダウンロードします。


$ cd ~/Downloads
$ mkdir sbcl-2.6.0
$ cd sbcl-2.6.0
$ wget http://prdownloads.sourceforge.net/sbcl/sbcl-2.6.0-x86-64-linux-binary.tar.bz2

2. パッケージ用ディレクトリの準備

ダウンロードしたバイナリを解凍し、パッケージ用ディレクトリを準備します。


$ tar -jxvf sbcl-2.6.0-x86-64-linux-binary.tar.bz2
$ cd sbcl-2.6.0-x86-64-linux

3. インストール先の指定とインストール

INSTALL_ROOTを指定して、パッケージ用ディレクトリにインストールします。


$ INSTALL_ROOT=/tmp/sbcl-2.6.0/usr/local sh install.sh

4. パッケージの作成

rootユーザに切り替えて、Slackwareパッケージを作成します。


$ cd /tmp/sbcl-2.6.0
$ su
Password:

# makepkg --linkadd y --chown y sbcl-2.6.0-x86_64-1.txz

Slackware package maker, version 2.1.

[画面表示省略]

Package creation complete.

5. パッケージのインストール

作成したパッケージをインストールします。


# chmod 755 sbcl-2.6.0-x86_64-1.txz
# installpkg sbcl-2.6.0-x86_64-1.txz

6. 動作確認

インストール後、SBCLが正常に起動することを確認します。


$ sbcl
This is SBCL 2.6.0, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
...
* (+ 1 2 3)
6
* (quit)

ソースからのビルド

SBCLは大部分がLispで書かれているため、ソースからビルドするには既存のANSI Common Lisp実装が必要です。
SlackwareにはCLISPが含まれているため、これをホストコンパイラとして使用できます。
Lispでコンパイルするというのも、滅多に見られるものではないので、経験しておくと良いかもしれません。

1. ソースのダウンロードと展開


$ cd ~/Downloads
$ wget http://prdownloads.sourceforge.net/sbcl/sbcl-2.6.0-source.tar.bz2
$ tar jxvf sbcl-2.6.0-source.tar.bz2
$ cd sbcl-2.6.0

2. CLISPをホストにしてビルド

--xc-hostオプションでCLISPを指定してビルドします。
もしも、SBCLをアップグレードする場合には、--xc-host='sbcl'にしましょう。


$ /usr/bin/time -v sh make.sh --xc-host='clisp'

[画面出力を略]
//build started:  Mon Jan 12 14:21:40 JST 2026
//build finished: Mon Jan 12 14:38:48 JST 2026
        Command being timed: "sh make.sh --xc-host=clisp"
        User time (seconds): 962.33
        System time (seconds): 62.84
        Percent of CPU this job got: 99%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 17:08.45
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 285260
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 264
        Minor (reclaiming a frame) page faults: 24531403
        Voluntary context switches: 3660
        Involuntary context switches: 92589
        Swaps: 0
        File system inputs: 73560
        File system outputs: 411056
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

3. ドキュメントのビルド


$ cd doc/manual
$ make
$ cd ../..

4. パッケージ用ディレクトリへのインストール


$ INSTALL_ROOT=/tmp/sbcl-2.6.0/usr sh install.sh

4. パッケージの作成

Slackwareパッケージを作成します。


$ cd /tmp/sbcl-2.6.0
$ sudo makepkg --linkadd y --chown y ../sbcl-2.6.0-x86_64-1.txz

Slackware package maker, version 2.1.

[画面表示省略]

Package creation complete.

5. パッケージのインストール

作成したパッケージをインストールします。


cd ..
sudo installpkg sbcl-2.6.0-x86_64-1.txz

6. 動作確認

インストール後、SBCLが正常に起動することを確認します。


$ sbcl
This is SBCL 2.6.0, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
...
* (+ 1 2 3)
6
* (quit)

Enjoy your Slackware life!