結局のところMoshを使うにはどうすれば良いのか
(警告 ; 以下の記述はすべて64bitユーザランドのLinuxをインストールしていることを前提としている。もし、少ない労力でmoshをインストールしたいのなら、32bitのx86 debianあるいはubuntuのユーザランドを準備することを薦める。BSDや他のアーキテクチャでは検証していない。)
追記
追記
このセットアップは、
というディレクトリ構成で、Gentoo Linux、crossdevでの32bitコンパイラにおける手法を書いている。通常のシチュエーションであれば、--hostやCFLAGSの追加は不要で、単純にconfigureしてmake、make installという通常の手順でインストールすることができる。
リリース版のmoshのインストール
SVN版のmoshをビルドするにはmoshが要るので、まずはmoshを入手してインストールする。
システムが32bitであれば正常にビルドできるが、64bitではエラーになる。
TextualInputPort.cpp: In constructor 'scheme::TextualInputPort::TextualInputPort(scheme::BinaryInputPort*, scheme::Transcoder*)':
TextualInputPort.cpp:58: error: call of overloaded 'ucs4string(NULL)' is ambiguous
ucs4string.h:57: note: candidates are: scheme::ucs4string::ucs4string(const ucs4char*)
ucs4string.h:56: note: scheme::ucs4string::ucs4string(int, ucs4char)
ucs4string.h:53: note: scheme::ucs4string::ucs4string(const scheme::ucs4string&)
通常のLinuxならば32bit版のライブラリと実行インフラ(multilib)を備えるので、単純にコンパイラのコマンドラインに-m32を付与すればよい。
(32bit ABIの) Gnu MPのインストール
(通常の人間はこのセクションを読み飛ばせる)
最近のmoshはGNU MPライブラリに依存しており、通常のLinuxは32bit版の周辺ライブラリをデフォルトでは提供していない。
先のCFLAGSの直接指定に拠る方法ではなく、GNU MPには組み込みの32bit ABIサポートがあるため、32bit ABIでビルドするために以下のようにする。
- ./configure ABI=32 --enable-cxx --prefix=/opt/gmp32
あとは通常通りにインストールすればよい。
既に64bit版のGMPをインストールしている可能性もあるので十分に注意する。特に他の目的で32bit版のGMPを使う予定が無ければ、prefixはmoshと同一でも問題無い。
SVN版のmoshのインストール
以下r764r781に関して。
- http://code.google.com/p/mosh-scheme/source/checkout にSVNのコマンドラインがあるので実行する
CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-L/opt/gmp32/lib ./configure --prefix=/opt/mosh先ほどと同じようにMakefileを修正先ほどインストールしたmoshをソースツリー中にコピー(ビルド中に./moshで呼ぶため。。)不要となった。- ビルド
oku@localhost ~/mosh/mosh-scheme-read-only $ uname -a
Linux localhost 2.6.21-xen #3 SMP Mon May 26 09:54:02 JST 2008 x86_64 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz GenuineIntel GNU/Linux
oku@localhost ~/mosh/mosh-scheme-read-only $ mosh -t
Running 1848/1858 (9 ToDo)
=== 1 error(s) =========
(nan? (rationalize +inf.0 +inf.0)) : expected #t but got #f.