SML#2.0.0がリリースされました.
せっかくなのでパッケージではなくソースからビルド.*1
というわけでクリーンなXubuntu 12.04LTSでSML#をビルドしたときの経験まとめです.*2
32bit環境の整備
C/C++の32bitライブラリを用意しておきます.
GMP,LLVM,SML#のビルドに必要.
たぶんこれで依存するg++も入ってくれる.
# aptitude install gcc-multilib g++-multilib
GMPライブラリのビルド
通常のGMPライブラリパッケージ(libgmp-dev)は64bitビルドされているので,SML#用に32bitでビルドする.*3
configureを走らせるときにABI=32オプションをつけて,32bitビルドを指定.
$ wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.lz $ lzip -d gmp-6.0.0a.tar.lz $ tar xf gmp-6.0.0a.tar $ cd gmp-6.0.0a # mkdir /opt/gmp32-6.0.0 # ./configure ABI=32 --prefix=/opt/gmp-6.0.0 $ make && make check # make install
追記:runtimeでロードできるようにldconfのパスに加えて、リロードする。
# echo '/opt/gmp32-6.0.0/lib' > /etc/ld.so.conf.d/gmp32.conf # ldconf
LLVMのビルド
配布されているUbuntu系用のLLVMバイナリは64bitビルドです.*4
なので自力で32bitビルド.
また,SML#は現時点での最新版であるLLVM3.4 32bitを必要としますので,多くのディストリビューションで自力ビルドが必要かと思います.
$ wgetやら解凍やら省略 # mkdir /opt/llvm32-3.4 $ ./configure CC='gcc -m32' CXX='g++ -m32' \ --build=i686-pc-linux-gnu \ --prefix=/opt/llvm32-3.4 $ make # make install
必要なライブラリ郡その他
なんか知らないけど./configure中に怒られたので,libzやlibinfoをいれる.
INSTALLとかの説明には書いてないけど必要なら仕方ない.
# aptitude install libz-dev # aptitude install libinfo-dev
SML#のビルド
ここまでくればSML#をビルドするだけ!
fast-buildオプションが行方不明なのでコーヒーでも飲みながらまったり待ちましょう.
必要なオプションは32bit・GMP・LLVMの指定です.インストール先のprefixはお好みで.
オプション長すぎぱない.
$ wgetやら解凍やら省略 # mkdir /opt/smlsharp-2.0.0 $ ./configure CC='gcc -m32' CXX='g++ -m32' \ LD='ld -m elf_i386' \ LDFLAGS='-L/opt/gmp32-6.0.0/lib' \ CPPFLAGS='-I/opt/gmp32-6.0.0/include' \ --with-llvm=/opt/llvm32-3.4 \ --prefix=/opt/smlsharp-2.0.0 $ make # make install
まとめ
- 必要が無い限りSML#はビルドパッケージを使うと楽
- SML#をビルドするなら32bitOSが楽
- やれるものならやってみろ