ECL on Windows by VC++

eclというのはCommon Lisp処理系のうちの一つで、小さなスタンドアロンバイナリを作ることに向いているとかなんとか。こいつをwindowsでまともに動くようにするまでに丸一日以上かかった。

 

まずは処理系のインストール。自分はvc++でソースからコンパイルしていましたが、sourceforgeにwindows用のバイナリが転がっていました。こっちを使った方がはるかに楽です。 

バイナリ: http://sourceforge.net/projects/ecls/files/ecls/12.7/ 

 

 これでまあ処理系インストールできたかなと思ったのですが、ここからが茨の道だったわけで。

あちらこちらのページに書いてあるようにcompile-fileやらc:build-programを試してみるのですがどうもバイトコードまでにしかコンパイルされない。(eclはバイトコードコンパイラとCへのトランスレータを持ち合わせるぽい)  これはvcでコンパイルしたからか?と思いmingwでeclをコンパイルすることを試みるも上手くいかず(これで数時間飛んだ)

 ここで停滞してたわけですが公式に答えがのってました。:

* In Windows ECL comes with bytecodes compiler by default, because C
compilers are normally not avaiable. Unfortunately several
libraries out there are not prepared for this. If you plan to use
quicklisp and have a C compiler accessible to ECL, you may use
(ext:install-c-compiler) to switch back to the Lisp-to-C compiler. 

ECL on WindowsはデフォでCコンパイラがオフになってるらしい。なんてややこしいことを(憤怒

以下Cコンパイラをオンにするための手順

  1. vc++をインストールしておく
  2. initスクリプトに
    (ext:install-c-compiler)
    (setf c::*compile-in-constants* t)

    を追加しておく

これでちゃんとCにコンパイルしてくれるようになります。尚vc++関連のファイルにパスが通ってないといけないので環境変数を弄るかVisual Studio コマンドプロンプトからeclを実行する必要があるらしいです。

まあこれでECLがまともに動くようになるはずです。多分。