Ubuntu 9.10 DesktopでGo 〜Google Go 開発環境の構築〜
「電車でGo!」を思い出すタイトルだが、早速Googleの新プログラム言語「Go」をUbuntu 9.10 Desktopで試してみましょう!
32ビットのLinux環境でのトライです。AMD64やARMの方は若干異なる部分がありますので、ご注意を。
基本的にはhttp://golang.org/doc/install.htmlに 従ってやってきます。
Goにはアーキテクチャ別のコンパイラと「gccgo」というGCCベースの2つのコンパイラが存在します。
アーキテクチャ別のコンパイラの特徴は高速とのことで、8gでGoのコンパイル、8aでアセンブラのアセンブル、8cでCのコンパイル、8lでリンクです。
アセンブラやCともリンク可能ですので、確かにそそるものがあります。
GCCベースのコンパイラの特徴は効率的なコードを生み出すことで、普通にGCCのようにコンパイルできます。でもまだ品質が低いようです。
★★★では、まずはアーキテクチャ別のコンパイラの方から作成してみましょう。
手順としては、環境変数の設定、必要なパッケージのインストール、ソースのダウンロード、Goのビルドとインストール、Goプログラムの作成、実行となります。
★まずは、環境変数の設定です。端末にて入力します。
1、Goのルートディレクトリ「$GOROOT」を設定します。権限のこともありますので、例に従ってホームディレクトリに作成し、設定します。
$ mkdir $HOME/go
$ export GOROOT=$HOME/go
2、GoのターゲットOS「$GOOS」を設定します。今回のターゲットOSはLinuxですので、下記のとおりに。
$ export GOOS=linux
3、Goをコンパイルするアーキテクチャ「$GOARCH」を設定します。今回は32ビット前提ですので、下記のとおりに。
$ export GOARCH=386
4、Goのバイナリをインストールするディレクトリ「$GOBIN」を設定します。ここでも例に従ってホームディレクトリに作成し、設定します。
このディレクトリは特殊なディレクトリで、Ubuntu9.10Desktopでは、このディレクトリが存在した場合は、ログイン時に自動的にパス
を通してくれます。
$ mkdir $HOME/bin
$ export GOBIN=$HOME/bin
5、$GOBINを$PATHにも設定します。
$ export PATH=$GOBIN:$PATH
※ Goのインストールやビルドだけでなく、Goでの開発を行う場合にも、上記の環境変数の設定が毎回必要になります。
それが面倒だという人は、Bashファイルを作るか、$HOME/.profileの最後の3行を下記のように改変し、パスを通しておくと、毎回起動するだけでGoでの開発が可能になります。
元の状態
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
編集後の状態
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
export GOROOT=$HOME/go
export GOOS="linux"
export GOARCH=386
export GOBIN=$HOME/bin
fi
★次に、必要な3つのパッケージを先にインストールします。
1、Synapticを起動
2、ビルド環境構築のため「build-essential」をインストール指定
3、Goをダウンロードするための「mercurial」をインストール指定
4、インストールするため「bison」をインストール指定
5、「適用」し、インストールを完了させる
★今度は、ソースコードのダウンロードです。
1、端末にて下記コマンドで$GOROOTにダウンロードします。
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
★ダウンロードしたソースコードをビルドしインストールします。
1、端末にてソースコードのビルドとインストール
$ cd $GOROOT/src
$ ./all.bash
2、ソースコードのビルドとインストールには結構時間がかかります。最終的に下記のようなメッセージが現れて終了です。2行目のNはリリースによって異
なる数字になるそうです。
--- cd ../test
N known bugs; 0 unexpected bugs
★プログラムの作成と実行
1、エディタで下記コードを記載し、hello.goで保存しましょう
package main
import "fmt"
func main() {
fmt.Printf("hello, 世界¥n")
}
2、端末にてコンパイル
$ 8g hello.go
名前を指定してコンパイルしたい場合は下記のように-oオプションにて指定
$ 8g -o filename hello.go
3、リンク
$ 8l hello.8
名前を指定してリンクしたい場合は下記のように-oオプションにて指定
$ 8l -o filename hello.8
4、実行
$ ./8.out
5、結果
hello,世界
日本語などのマルチバイト文字が得意みたいです。
★★★それでは、引き続いて、gccgoを作ってみましょう!
この作業は基本的にhttp://golang.org/doc/gccgo_install.htmlに従って行います。
手順は必要なパッケージのインストール、GCC&Go関係のソースコードのダウンロード、makeです。
パッケージ管理システムのSubversionがSynapticでインストールしたケースとapt-getでインストールしたケースで挙動が異なりまし たので、Synapticは使わず、端末のみでやってしまいます。
★必要なパッケージのインストール
1、ビルド環境のbuild-essentialやパッケージ管理システムのSubversionなど必要なパッケージを一気にインストールします。
$ sudo apt-get install build-essential subversion libgmp3-dev libgmpxx4ldbl libmpfr-dev flex
★Subversionでソースコードを落とします。
1、これには45分くらい時間がかかりました。15万を超えるファイルを落としますので、それなりのストレージの空き領域が必要です。
しっかり見てると先人たちの苦労が身にしみて、良い経験になりますので、しっかり見ておきましょう。
$ svn checkout svn://gcc.gnu.org/svn/gcc/branches/gccgo gccgo
2、作業用ディレクトリの作成。
$ mkdir objdir
$ cd objdir
3、次はmakeの準備です。
$ ../gccgo/configure --enable-languages=c,c++,go --with-arch=i686
cp $HOME/gccgo/libstdc++-v3/include/parallel/* $HOME/objdir/i686-pc-linux-gnu/libstdc++-v3/include/parallel
★では、makeしましょう。
1、makeには、とても時間がかかります。3時間以上かかりました。
この文章を書きながらやっていましたので、全ては見てはいませんが、どうもいくつか警告やエラーが出ていたような気が・・・
$ sudo make
2、これでgccgoができあがりましたので、次はインストールです。これは、スーパーユーザ権限でやらないと駄目です。
$ sudo make install
Native Clientの言語候補ということで、試してみましたが、別にC言語で不便がない人なら、いらないような気がします。
Native
Clientも独自仕様が強すぎると他のブラウザが追従してきませんので、かつてのIEのように、Chromeでしか見られないサイトや動かないアプリが
生まれてしまいそうです。
Native
ClientはWebをめちゃめちゃ快適にする、素晴らしい技術ですので、Goなんて作ってないで、もっと汎用的な仕様にしたほうが良いのでは?という気
がします。
ここでの文章、画像、検証結果などは全てDreamHopeに著作権があります。リンクに関してはTopLink、DeepLinkともに構いませんが、全部・一部の「学術論文等許諾の不必要な引用」以外の引用に関しては禁止します。
Copyright (C) 2009 DreamHope All Rights Reserved . Access: