先日は windows で Go を試してみましたが、ここでは普通にUbuntuにインストールしてみます。
Go コンパイラ
Goコンパイラには 6g や 8g のような gc Goコンパイラと、gcc をバックエンドにした gccgo コンパイラがあります。gccgo では最適化が十分に行えるものの、ガベージコレクションが未実装となっていたりコンパイラ自体のコンパイルが面倒だったりします。ここでは gc Go コンパイラを Ubuntu 9.10 にインストールする手順について見ていきます。
環境変数の設定
最初に環境変数を設定しておきます。以下のコマンドにて .bashrc に環境変数の定義を追加します。
$ echo '' >> ~/.bashrc $ echo '# for Go lang environment' >> ~/.bashrc $ echo 'export GOROOT=$HOME/go' >> ~/.bashrc $ echo 'export GOOS=linux' >> ~/.bashrc $ echo 'export GOARCH=386' >> ~/.bashrc $ echo 'export GOBIN=$HOME/bin' >> ~/.bashrc $ source ~/.bashrc
環境変数の設定を以下のコマンドで確認します。
$ env | grep ^GO GOBIN=/home/naotsugu/bin GOARCH=386 GOROOT=/home/XXXX/go GOOS=linux
ソースファイルの取得
リポジトリからGoのソースを取得します。リポジトリは Mercurial なのでインストールしておきます。hgコマンドがあればこの作業は不要です。
sudo apt-get install mercurial
以下のコマンドを入力してhgコマンドを確認しておきます。
$ hg --version
ではリポジトリからソースを取得します。$GOROOTディレクトリが空の状態で以下のコマンドを実行します。
$ sudo hg clone -r release https://go.googlecode.com/hg/ $GOROOT
Go ツールのビルド
Go ツールのコンパイルには bison, gcc, libc6-dev, ed が必要です。Ubuntu 9.10 では bison 以外はインストールされているはずです。以下のコマンドでbisonをインストールします。
$ sudo apt-get install bison
インストール後以下のコマンドで確認しときます。
$ dpkg -s bison
ビルド後の出力ディレクトリ$GOBINの実体を作成しておきます。また、このディレクトリにパスを設定しておきます。ビルドには5分程度かかります。
$ mkdir $HOME/bin $ export PATH=$PATH:$GOBIN $ cd $GOROOT/src $ ./all.bash
$GOBIN を /usr/local/bin などとした場合、sudo ./all.bash とする必要があるが、この場合 root の環境変数として前述の $GOROOT などを設定する必要があります。ビルドを実行するユーザの権限のあるディレクトリを指定しておいて、後で /usr/local/bin にコピーするのが良いでしょう。
以下のような出力でビルドは終了します。
--- cd ../test 1 known bugs; 0 unexpected bugs
ビルド結果として以下のファイルが作成されました。
$ ls $GOBIN 6cov 6prof 8c 8l ebnflint godoc gomake gotest hgpatch 6nm 8a 8g cgo godefs gofmt gopack goyacc quietgcc
コンパイル
ではビルドしてできたツールにてコンパイルをしてみましょう。まずはソースを作成します。
$ cat > hello.go <<EOF package main import "fmt" func main() { fmt.Printf("hello, world\n") } EOF
コンパイルして実行してみます。
$ 8g hello.go $ 8l -o hello hello.8 $ ./hello hello, world
大丈夫そうですね。ではコンパイラ達を/usr/local/binにコピーしておきます。
$ sudo cp -p $GOBIN/* /usr/local/bin
以上で完了です。