Raspberry Pi 3にghc8.10.1をインストールしてみたので記事にします。
当初stackをインストールしたくて、通常のLinuxにインストールするように
curl -sSL https://get.haskellstack.org/ | sh
や
wget -qO- https://get.haskellstack.org/ | sh
を試してみましたが、だめでした。
CPUがArmのRaspberry Piには、現時点ではstackをインストールできないようです。
GHC8.10.1のインストール
環境
Raspberry Pi 3
OS: Rasbian 32bit
インストールアカウント:デフォルト(pi)
調べる
Raspberry Piへのインストール方法をググってみると、公式にwikiがありました。
Raspberry Pi
上記ページのリンクのトップに下記がありました。
The state of GHC on ARM
ここにインストール方法が載っています。
以下インストール方法です。
注意事項
※インストールはRasbian 32bitで成功しました。
Rasbian 64bitでインストールを行ってみましたが、インストールの途中でエラーになりました。
※インストールはデフォルトのアカウント(pi)で成功しました。
最初、別に作成したアカウントでインストールを始めたら、インストールでこけました。
ダウンロードするファイルの所有権が(pi)になっています。所有権を変更すれば成功していたかもしれません。
インストール方法
まずは、LLVM 9(GHCがARMでのコード生成に使用)をインストールする必要があるようです。
sudo apt-get install llvm-9
ダウンロード
wget http://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-armv7-deb9-linux.tar.xz
解凍
tar -xf ghc-8.10.1-armv7-deb9-linux.tar.xz
※公式サイトではファイル名が間違っていましたので注意です。
フォルダの移動とコンフィグ&インストール
cd ghc-8.10.1
./configure CONF_CC_OPTS_STAGE2="-marm -march=armv7-a" CFLAGS="-marm -march=armv7-a"
sudo make install
動作確認
バージョンの表示とハローワールド
$ ghc --version
$ cat > Hello.hs <<EOF
> main = putStrLn "hello world!"
> EOF
$ ghc Hello.hs
$ ./Hello
hello world!
小職の場合は上記を実行すると、下記のようなエラーになりました。
/usr/bin/ld.gold: エラー: -lgmp が見つかりません
なのでファイル(gmp)を検索
sudo find / -name *gmp*
下記フォルダにファイルが見つかりました。
/usr/lib/arm-linux-gnueabihf/libgmp.so.10.4.1
リンクを作成しました。
cd /usr/lib/arm-linux-gnueabihf
sudo ln -s libgmp.so.10.4.1 libgmp.so
あらためて動作確認すると、ハローワールドが表示されました。
pi@raspberrypi:~/Documents/project/make/haskell/hello $ cat Hello.hs
main = putStrLn "hello world!"
pi@raspberrypi:~/Documents/project/make/haskell/hello $ ghc Hello.hs
[1 of 1] Compiling Main ( Hello.hs, Hello.o )
Linking Hello ...
pi@raspberrypi:~/Documents/project/make/haskell/hello $ ./Hello
hello world!
インストール後は別のアカウントでもGHCは動作しました。
以上