Arch Linux (64bit) における SML# のビルド
@c0hama めっちゃ流行ってるのでやりましょう
— みずぴー(クッキー) (@mzp) 2014, 5月 5
どうやら巷では SML# をビルドするのが流行っているようなので、僕も乗っかってみました。 僕のメイン環境は Arch Linux (64bit) なのですが色々試行錯誤したらビルドできたので記録として残しときます。
Xubuntu 64bit でのビルドは、すでによんたさん (id:keita44_f4) が成功させているので僕もそれを参考にしました。
Xubuntu 64bitにおけるSML# 2.0.0のビルド - ししちにじゅうはち 4x7=28
32bit 用の gcc のインストール
32bit のバイナリを吐き出すために gcc-multilib
を入れます。
sudo pacman -S gcc-multilib
普通の gcc とコンフリクトするというメッセージと共に上書きするか聞いてくるので yes と答えます。
なお、32bit のバイナリをインストールするには/etc/pacman.conf
でmultilib
のリポジトリを有効にする必要があります。
GMP ライブラリのインストール
Arch Linux なら 32bit 版でもバイナリがあります。
sudo pacman -S lib32-gmp
LLVM ライブラリのインストール
Arch Linux なら 32bit 版でもバイナリがあります。
sudo pacman -S lib32-llvm
SML# のビルドの前に...
SML# のビルドでは LLVM 関連のパスを取得するのに llvm-config
という実行ファイルを使っているみたいなのですが、Arch Linux の pacman で lib32-llvm
をインストールした場合は llvm-config32
という名前になります。
これに対応させるため、SML# のソースに含まれる configure
ファイルを編集します。
# configure の 4288 行目くらい - set dummy llvm-config; ac_word=$2 + set dummy llvm-config32; ac_word=$2
SML# のビルド
ここまでくればあとは SML# をビルドするだけ!
ちなみに pacman 経由で 32bit バイナリを入れると /usr/lib32
以下にものができるのでそれをオプションで指定してやります。
./configure CC='gcc -m32' CXX='g++ -m32' \ LD='ld -m elf_i386' \ LDFLAGS='-L/usr/lib32' \ --prefix=/opt/smlsharp-2.0 make sudo make install
まとめ
- やっぱり 64bit は茨の道だった
- そもそも SML# 書いたことないし文法も知らない
- やってみたらできました