言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

Linux 環境における Squeak 開発。

最近にわかに Squeak にとって Linux の重要性が増してきましたので、Linux 環境で Squeak VMデバッグする際のポイントを書いてみます。

ソースコードをダウンロード

ソースコードhttp://squeakvm.org/unix/ より以下のようにしてダウンロード出来ます。

コンパイル

普通のコンパイルの仕方は、platforms/unix に cd した後一言 make です。これにより自動的に configure とバイナリの作成が行われます。実行ファイルの作成位置は platforms/unix/bld でプラグイン(動的モジュール)の作成位置は platforms/unix/bld/プラグイン名/.lib です。どういった深い意味があってこんなわかりにくい場所にプラグインが出来るのかよく知りませんが、コンパイルしただけでは実行出来ないので注意してください(後述)

開発のためには、自分で configure した方が良いと思います。

$ mkdir bld
$ cd bld
$ ../config/configure --prefix=$HOME CFLAGS=-g

自分で configure すると、デバッグ情報付き最適化無しのバイナリが作れたり (CFLAGS=-g) 、好きな位置にインストール出来ます (--prefix=$HOME)。

  • configure の出力を目を皿にして見て、ちゃんと必要なプラグインMakefile が出来ているかを確認してください。たとえば vm-sound-ALSAALSA のヘッダファイルがインストールされていないと出来ません。
  • あとでデバッガを使うのに CFGAGS=-g は必須です。これがないと -O2 の最適化をされてしまうので、変数がわからなくなります。

インストール / アンインストール

platforms/unix/bld ディレクトりにて make install でインストール、make uninstall でアンインストールです。インストールだけなら platforms/unix/ でも可能です。

実行

前述のとおり、プラグインのバイナリが変所に出来るのでコンパイルだけでは動作しません。かといって毎度インストールも馬鹿馬鹿しいので、特定のプラグインデバッグしている場合はそのプラグインの位置を環境変数で指定します。例えば以下のようにします。これは同じ名前で複数のバージョンを作って比べたい時にも使える技です。

$ export SQUEAK_PLUGIN_PATH=$HOME/src/squeak-svn/platforms/unix/bld/vm-sound-ALSA/.libs/
$ ~/bin/squeak hoge.image

デバッグ

デバッガには、DDD という GUI デバッガがあるのですが、使ってみた所不安定で使いものにならなかったので emacsgdb モードを使っています。また後で書くかな?