clispをFreeBSDにインストールする
【追記】13.0-RELEASEの手順はこちら FreeBSD 13.0-RELEASEでclispをソースから構築 - nptclのブログ
【追記】portsにclispが追加されました clispをFreeBSDにインストールする2 - nptclのブログ
【追記】最新バージョンのclispを入れる手順を追記しました
大昔のFreeBSDでは、clispが普通にportsで利用できていたように思えます。 しかし、ある日忽然と消えてしまいました。 clisp本家からたどれる、 Get CLISP->FreeBSD にはDEPRECATEDとか書かれています。 だからもう利用できません。
本当にそうなのか? 少なくとも自分はclispがないと生きていけないんですが、 みんな諦めて別のを使っているのでしょうか? たぶん諦めた方が賢明かもしれませんが、 ここではFreeBSDにclispをインストールする方法を説明します。
FreeBSDから削除された理由は、たぶんFreeBSDの標準コンパイラが gccからclangに変わったからだと思います。 clangではclispはコンパイルできませんでした。 結構がんばったのですが、gccじゃないとコンパイルは無理っぽい。
gccはportsから導入できるはずですが、 clispのためだけに入れるのも嫌だったので、 ここでは、ローカル環境でclispをコンパイルする方法を示します。 ちなみに確認用に実施した環境は FreeBSD 11.1-RELEASE (amd64)。
事前準備
shellは/bin/sh
で説明します。
csh系を使っている場合は切り替えてください。
% /bin/sh $
方法はgccをローカルに入れて、そのあとにclispをコンパイルするという流れとなります。
手順では、$HOME/work
配下に下記のディレクトリを作成します。
ディレクトリ | 説明 |
---|---|
install | 作業用 |
gcc | gccコンパイラ一式 |
clisp | clisp一式 |
ディレクトリ名をいちいち入力するのが面倒なので、 作業用ディレクトリ用の環境変数を設定します。
$ work="${HOME}/work" $ gcc="${HOME}/work/gcc" $ clisp="${HOME}/work/clisp"
作業用ディレクトリを作成します。
$ mkdir ${work} $ mkdir ${work}/install
gccのインストール
最新の安定版gccは8.3.0でした。 最低限の依存関係を考慮した場合、下記のファイルが必要になります。
- gmp-6.1.2.tar.xz
- mpc-1.1.0.tar.gz
- mpfr-4.0.2.tar.xz
- isl-0.20.tar.xz
- make-4.2.1.tar.bz2
- gcc-8.3.0.tar.xz
ダウンロード
$ cd ${work}/install $ fetch http://ftp.jaist.ac.jp/pub/GNU/gmp/gmp-6.1.2.tar.xz $ fetch http://ftp.jaist.ac.jp/pub/GNU/mpc/mpc-1.1.0.tar.gz $ fetch http://ftp.jaist.ac.jp/pub/GNU/mpfr/mpfr-4.0.2.tar.xz $ fetch http://isl.gforge.inria.fr/isl-0.20.tar.xz $ fetch http://ftp.jaist.ac.jp/pub/GNU/make/make-4.2.1.tar.bz2 $ fetch http://ftp.jaist.ac.jp/pub/GNU/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz
ミラーサイトjaistさんを利用させていただきました。 ありがとうございます。
gmpの導入
$ cd ${work}/install $ tar Jxf gmp-6.1.2.tar.xz $ cd gmp-6.1.2 $ ./configure --prefix=${gcc} $ make $ make install $ make clean
mpfrの導入
$ cd ${work}/install $ tar Jxf mpfr-4.0.2.tar.xz $ cd mpfr-4.0.2 $ ./configure --prefix=${gcc} --with-gmp=${gcc} $ make $ make install $ make clean
mpcの導入
$ cd ${work}/install $ tar zxf mpc-1.1.0.tar.gz $ cd mpc-1.1.0 $ ./configure --prefix=${gcc} --with-gmp=${gcc} --with-mpfr=${gcc} $ make $ make install $ make clean
islの導入
$ cd ${work}/install $ tar Jxf isl-0.20.tar.xz $ cd isl-0.20 $ ./configure --prefix=${gcc} --with-gmp-prefix=${gcc} $ make $ make install $ make clean
GNU makeの導入
$ cd ${work}/install $ tar jxf make-4.2.1.tar.bz2 $ cd make-4.2.1 $ ./configure --prefix=${gcc} $ make $ make install $ make clean
gccの導入
$ cd ${work}/install $ tar Jxf gcc-8.3.0.tar.xz $ mkdir gcc-object $ cd gcc-object $ export LD_LIBRARY_PATH=${gcc}/lib:$LD_LIBRARY_PATH $ export LIBRARY_PATH=${gcc}/lib $ export C_INCLUDE_PATH=${gcc}/include $ export CPLUS_INCLUDE_PATH=${gcc}/include $ export LC_COLLATE=C $ ../gcc-8.3.0/configure \ --enable-languages=c \ --prefix=${gcc} \ --with-gmp=${gcc} \ --with-mpfr=${gcc} \ --with-mpc=${gcc} \ --with-isl=${gcc} \ --disable-bootstrap $ ${gcc}/bin/make $ ${gcc}/bin/make install $ ${gcc}/bin/make clean
確認
これで下記のファイルからgccを使用できます。
${HOME}/work/gcc/bin/gcc
確認してみます。
$ ${HOME}/work/gcc/bin/gcc --version gcc (GCC) 8.3.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
注意点があり、環境変数をちゃんと設定しないと コンパイルが上手く動作しません。 この辺りはclispコンパイル時にちゃんと見ていきます。
clispのインストール
前の手順にてすでに設定されていますが、 念のため次の環境変数が設定されているか確認してください。
$ work="${HOME}/work" $ gcc="${HOME}/work/gcc" $ clisp="${HOME}/work/clisp"
前手順ではローカル環境にgccを導入したので、環境変数の設定をします。
$ export CC=${gcc}/bin/gcc $ export LD_LIBRARY_PATH=${gcc}/lib:$LD_LIBRARY_PATH $ export LIBRARY_PATH=${gcc}/lib $ export C_INCLUDE_PATH=${gcc}/include $ export CPLUS_INCLUDE_PATH=${gcc}/include
最新版clispは2.49でした。 最低限の依存関係を考慮した場合、下記のファイルが必要になります。
- libsigsegv-2.12.tar.gz
- ffcall-1.10.tar.gz
- readline-8.0.tar.gz
- clisp-2.49.tar.bz2
ダウンロード
$ cd ${work}/install $ fetch http://ftp.jaist.ac.jp/pub/GNU/libsigsegv/libsigsegv-2.12.tar.gz $ fetch http://www.haible.de/bruno/gnu/ffcall-1.10.tar.gz ★もしsslエラーになったら下記を実行 $ fetch --no-verify-peer http://www.haible.de/bruno/gnu/ffcall-1.10.tar.gz $ fetch http://ftp.jaist.ac.jp/pub/GNU/readline/readline-8.0.tar.gz
【追記】リリース版のclispを入れる場合
$ fetch http://ftp.jaist.ac.jp/pub/GNU/clisp/release/2.49/clisp-2.49.tar.bz2
【追記】最新版のclispを入れる場合
$ fetch --no-verify-peer https://gitlab.com/gnu-clisp/clisp/-/archive/master/clisp-master.tar.bz2
libsigsegvの導入
$ cd ${work}/install $ tar zxf libsigsegv-2.12.tar.gz $ cd libsigsegv-2.12 $ ./configure --prefix=${clisp} $ make $ make install $ make clean
ffcallの導入
$ cd ${work}/install $ tar zxf ffcall-1.10.tar.gz $ cd ffcall-1.10 $ ./configure --prefix=${clisp} $ make $ make install $ make clean
readlineの導入
$ cd ${work}/install $ tar zxf readline-8.0.tar.gz $ cd readline-8.0 $ ./configure --prefix=${clisp} $ make $ make install $ make clean
clispの導入
$ cd ${work}/install
★リリース版の場合 $ tar jxf clisp-2.49.tar.bz2 $ cd clisp-2.49 ★最新版の場合 $ tar jxf clisp-master.tar.bz2 $ cd clisp-master
$ ./configure --prefix=${clisp} \ --with-libsigsegv-prefix=${clisp} \ --with-libffcall-prefix=${clisp} \ --with-readline-prefix=${clisp} \ --disable-mmap $ cd src $ make $ make install $ make clean
確認
これで下記のファイルが作成されます。
${HOME}/work/clisp/bin/clisp
実行できるか確認します。
$ ${HOME}/work/clisp/bin/clisp i i i i i i i ooooo o ooooooo ooooo ooooo I I I I I I I 8 8 8 8 8 o 8 8 I \ `+' / I 8 8 8 8 8 8 \ `-+-' / 8 8 8 ooooo 8oooo `-__|__-' 8 8 8 8 8 | 8 o 8 8 o 8 8 ------+------ ooooo 8oooooo ooo8ooo ooooo 8 Welcome to GNU CLISP 2.49 (2010-07-07) <http://clisp.cons.org/> Copyright (c) Bruno Haible, Michael Stoll 1992, 1993 Copyright (c) Bruno Haible, Marcus Daniels 1994-1997 Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998 Copyright (c) Bruno Haible, Sam Steingold 1999-2000 Copyright (c) Sam Steingold, Bruno Haible 2001-2010 Type :h and hit Enter for context help. [1]> (quit) Bye. $
環境変数が設定されていなくても実行できるはずなので、 確認をするなら一度ログアウトしてから実施してみてください。