このドキュメントはhttp://golang.org/doc/install.htmlの翻訳です。
はじめに
Go言語はオープンソースプロジェクトで、BSDライセンスで提供されています。
このドキュメントでは、ソースの取得、ビルド、実行方法について説明します。
Go言語を試すには2通りの方法がありますが、このドキュメントではgc Go言語コンパイラとそのツール(6g, 8gなど)について説明します。
もうひとつはgccgoというGCCをバックエンドにしたコンパイラです。gccgoについてはSetting up and using gccgoを参照ください。
環境変数
Go言語を動作させるには3つの環境変数の設定が必要です。.bashrcなどに記述しておいてください。
$GOROOT
ベースとなるディレクトリです。通常は$HOME/goですが、他のディレクトでも構いません。
$GOOS, $GOARCH
この2つにはターゲットとなるOSおよびシステムを指定します。
$GOOSには、linux、freebsd、darwin (Mac OS X 10.5 または10.6)、 nacl (Native Client、実装は不完全)のいずれかを指定します。
$GOARCHには、amd64 (64-bit x86、最良の実装)、 386 (32-bit x86)、arm (32-bit ARM, 実装は不完全)のいずれかを指定します。$GOROOTと$GOARCHの有効な組み合わせは、次のいずれかになります。
$GOOS |
$GOARCH |
|---|---|
darwin |
386 |
darwin |
amd64 |
freebsd |
386 |
freebsd |
amd64 |
linux |
386 |
linux |
amd64 |
linux |
arm |
nacl |
386 |
$GOBIN (任意)
バイナリをインストールするディレクトリ。
デフォルトは$HOME/binです。このディレクトリを$PATHに必ず含めるようにしてください。
$GOARCH, $GOOSの値は、コンパイルする環境ではなくターゲットとなる実行環境を指定します。すなわちいつでもクロスコンパイルが可能です。
これら環境変数を.bashrcに設定したのち、正しく設定できているか次のようにして確認してみてください。
$ env | grep ^GO
マルチプラットフォーム対応
Go言語コンパイラは、2つのOS(Linux, Mac OS X)と3つのインストラクションセットをサポートします。
ARMがOS X上で(まだ)動かないことを除いて、LinuxとMacの差異はありません。
システムの違いによりコンパイラの品質に大きな差があります。
amd64(別名:x86-64) コマンド名:6g,6l,6c,6a
一番よく実装されています。コンパイラは最適化機能を持ち、よいコードを生成します。
(とはいえgccgoのほうが優れていることもあります)386(別名:x86,x86-32) コマンド名:8g,8l,8c,8a
amd64と同程度。ほぼ完全な実装です。arm(別名:ARM) コマンド名:5g,5l,5c,5a
いくつか大きいバグがあり現在修正中です。QEMUとアンドロイド携帯でテストされています。
OSと直接やりとりするような低レベルなコードを別にすれば、Go言語のランタイムはすべてのプラットフォームで次の実装が同様にされています。
- mark-and-sweep方式のガーベージコレクション(より優れたものを現在計画中)
- 使い易い配列
- 文字列のスライス
- セグメント管理されたスタック
- 強力なgoroutine
もう一方のgcccgoのドキュメントでコンパイラ、環境についての詳細を参照ください。
リポジトリからの取得
Mercurialをインストールしていない(hgコマンドがない)ときは、次のコマンドを実行します。
$ sudo easy_install mercurial
ほとんどのシステムでうまくいくはずです。(Ubuntuの場合は、まずこれを試してみてください:apt-get install python-setuptools python-dev)。うまくいかなければ、Mercurialのダウンロードページに行ってください。
つぎに、確実に$GOROOTディレクトリが存在しないか、または空の状態であることを確認した上でリポジトリからチェックアウトしてください。
$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
Go言語のインストール
Go言語のツールはC言語で記述されています。
ビルドするにはGCC、標準Cライブラリ、Bison、テキストエディタのedが必要です。
OS Xの場合はXcodeに含まれています。Linuxでは次のコマンドでインストールします。
$ sudo apt-get install bison gcc libc6-dev ed (Linuxディストリビューションによっては他のコマンドを使用します)
Go言語をビルドします。$GOBIN(設定していないときは$HOME/bin)が$PATHに含まれていること、およびディレクトリが存在することを確認の上、次のコマンドを実行します。
$ cd $GOROOT/src $ make all
make allの実行が成功すると、下のメッセージを出力して完了します。
--- cd ../test N known bugs; 0 unexpected bugs
Nの部分は番号でリリースのたびに変わります。
プログラムの記述
file.goというファイルのコンパイルは次のようにします。
$ 6g file.go
6gというコマンドはamd64向けのGo言語コンパイラで、file.6というファイルを出力します。
この‘6’という数字はamd64アーキテクチャーの識別コードです。
386の識別コードは‘8’、armは‘5’です。すなわち386アーキテクチャー上でコンパイルする場合はコンパイラは8gで、出力ファイルはfile.8となります。
リンクは次のようにします。
$ 6l file.6
プログラムの実行は次のようにします。
$ ./6.out
下はプログラミングから実行までの一連の例です。
$ cat >hello.go <<EOF
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
EOF
$ 6g hello.go
$ 6l hello.6
$ ./6.out
hello, world
$
hello.6をリンクする際、依存しているパッケージ(この例だとfmtパッケージ)を6lコマンドに与えてやる必要はありません。リンカーは、hello.6から自動的に依存するファイルを認識します。
大きなプログラムをビルドするにはMakefileを使いたくなるでしょう。これらのサンプルは $GOROOT/src/cmd/godoc/Makefile および $GOROOT/src/pkg/*/Makefileにあります。
Contributing to the Go projectに、ビルド、テストの手順についてより詳細な情報が記載されています。
最新リリースを保つ
新しいリリースは、Go Nutsメーリングリストでアナウンスされます。既存のディレクトリツリーを最新のリリースに更新するには、次を実行してください。
$ cd $GOROOT/src $ hg pull $ hg update release $ make all
コミュニティ
リアルタイムサポートは、Freenode IRCサーバの#go-nutsチャネルにて。
Go言語の公式ディスカッション用メーリングリストは Go Nutsにて。
バグの報告はGo issue trackerにて。
開発の状況を知りたい方は、別のメーリングリストgolang-checkinsにてGoリポジトリの個別のチェックイン情報のサマリーが受け取れます。
Trackback URL
Comments