Tcc Wrapper

Squeakで高速化する方法としてFFIVMプラグインがある。個人的には専らFFIを多用している。が、小さなCソースコードを別個に管理するのはかねてより面倒と感じていたところ、TCCなるものを見付けた。TCCは高速/小さなCコンパイラで、かつAPIを介してコンパイル/実行することができるようになっている。

UbuntuではSynapticパッケージマネージャでtccをインストールできるが、libtcc.hがインストールされないので、本家よりソースをダウンロードしてコンパイルした。

./configure  --prefix=/usr
make
sudo make install

コンパイルしてみたところ、次のようなエラーが出てしまった。

tcc: file 'AS_NEEDED' not found
/usr/lib/libc.so:3: filename expected
/usr/lib/libc.so:3: unrecognized file type

http://d.hatena.ne.jp/shinichiro_h/20061222 でパッチが公開されていたので、拝借して実行してみたら見事うごいた。

でやっとSqueakから使う話に移る。SqueakからFFI経由でCソースコードを文字列として渡して、コンパイルと実行、実行結果を返す共有ライブラリとそのFFIソースを書いてみた。いちおう動いた。まぁそれだけのはなしです。