雑記帳

ちょっとした文章とかメモ書きとか。

ghc-7.0.1をコンパイルインストールしてみた。(in Ubuntu10.10)

ghcって何?

ghcと言うのはHaskellの処理系の1つで、
The Glasgow Haskell Compiler (GHC)
のことです。

GHCをコンパイルする。(準備編)

Ubuntu10.10のソフトウェアセンターではghcの提供はあるのですが、
6.12.0の提供なので(11’1/2日現在では。)、まだ7.0.1の提供は始まっていません。
なので、7.0.1を使おうとする場合は自力でinstallしないといけません。
私は無性にmakeしたい病になっていたのでmake installしましたが、バイナリの
ghc-7.0.1-i386-unknown-linux.tar.bz2も提供されているので本来はこっちで問題ないと思います。
自力で無性にコンパイルしたい人だけ以下をどうぞ。

まず、ghcの本家に行き、Downloadから
ghc-7.0.1-src.tar.bz2
のソースコードのtar玉をDLしてきます。

その後にtar玉を展開した後、そのディレクトリに移動します。
DLするリンクの下の方にBuilding Guideがあるのでそれを頼りに行きます。

ここで、注意ですが、The Glasgow Haskell Compiler (GHC)はそれ自体もHaskellで書かれているので、ghcのメジャーバージョン6のコンパイラがある必要があります。
なので、ghc6のパッケージをソフトウェアセンターからインストールしておきます。

GHCをコンパイルする。(make編)

Quick Start: Just building and installing GHC

を頼りに行きましょう。
まず、ghcのソースコードのルートフォルダをカレントディレクトリとし、
$perl boot
スクリプトを走らせます。
次に、
$./configure
を走らせます。
また、ここでインストールしたいディレクトリの決定をします。
$./configure –prefix=$HOME/ghc
のようにすると自分のhomeディレクトリのghcフォルダにインストールされるように変更できます。(デフォルトでは/usr/local/bin)
そして、
$make
ですね。
但し、ディレクトリに2バイト文字が入っていると上手く行かないことがある(と言うか何故かエラーが出て先に進めない。)ので、
home/(user名)のフォルダにghc-7.0.1フォルダを移動してから作業した方が良いようです。
makeを走らせるとかなり長い時間ビルドすることになるので気長に待ちましょう。
また、make -j2などと-jオプションを付けると並列コンパイルされるようです。
コンパイルが終了したら、
$ ./inplace/bin/ghc-stage2
にghcのとりあえず使えるものが作成されます。
これを使ってみて問題が無いのであれば次に進みます。
$sudo make install
おなじみですね。

※デフォルトでは/usr/local/binにghcがインストールされるのですが、Ubuntuでは/usrフォルダなどのホームディレクトリ外はsudo root権限が無いと基本的に読み取り専用の権限しかユーザーに与えられていないので最初にsudoを付けます。

GHCをコンパイルする。(環境変数編)

普通Ubuntuでは/usr/local/binにパスが通っていないのでこのままだと、ghcのあるディレクトリを一々タイプしないといけなくなります。
これではめんどくさいので環境変数を設定します。

前回のエントリーでは~/.bashrcに追加する形で設定しましたが、これはshスクリプトが用意されていたのでこちらに記述する形でした。今回はそのスクリプトが無いので、
~/.bash_profile
の方に環境変数を追加してしまいましょう。

端末を起動してそのままの状態で、
$gedit ~/.bash_profile
とします。

Ubuntu 7.04から~/.bash_profileではなく~./profileの方を使うようになったようです。
参考URL(https://forums.ubuntulinux.jp/viewtopic.php?pid=6670)

なので、
$gedit ~./profile
とし、そこに変数を記述する感じにしないといけません。

そこに追加する形で編集します。
export PATH=$PATH:$HOME/bin
のような感じになっていると思いますが、
それに続けて、
:/usr/local/bin
と記述します。これで、(ユーザーのホームディレクトリ)/binをbashが探索した後、/usr/local/binディレクトリも探索に行ってくれるようになります。

/usr/local/binにはデフォルトでパスが通っています

それで端末を閉じた後に、
$ghc –version
と打ち、ghcのバージョンが7.0.1になっていれば成功です。

また、
$./configure –prefix=$HOME/ghc
とした時は
.profile:$HOME/ghc/binを追記して、ghc7.0.1のシンボリックリンクをghc→ghc7のようにするとghc6との共存も図ることができます。

お疲れさまでした。

ではこの辺で。

謝辞とか:
環境変数の設定に関して、
愛媛大学の阿萬 裕久講師のページ:
bash入門
http://www.hpc.cs.ehime-u.ac.jp/~aman/linux/bash/
の環境変数の項目を参考にさせて頂きました。ありがとうございます。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。