11月 11
Posted at 18:54 by Hiro

Googleから新しいプログラミング言語が登場したようです。
Googleの新しいプログラミング言語Go == Python(開発が速い) + C++(実行速度が速い)

公式マスコットのGordonの画がなんともゆる~い感じでいいです。とりあえずインストールガイドを読みながら、手元の開発マシン(Fedora 10)にインストールしてみました。

インストール

まずGo用の環境変数をいくつか設定する必要があります。

$ export GOOS=linux
$ export GOARCH=386
$ export GOROOT=/usr/local/go
$ export GOBIN=$GOROOT/bin
$ export PATH=$GOBIN:$PATH

Goのインストール先($GOROOT)は/usr/local/goにしています。予めディレクトリを作っておきましょう。

$ mkdir -p $GOBIN

なお、インストール作業はroot以外のユーザーで行うことをお薦めします。コンパイラなんだからホームディレクトリ配下ではなく、/usr/local配下にインストールしようと思い、最初はrootでインストールを試みたのですが、rootでインストールすると最後のテストフェーズでエラーが発生してしまいます。

次にソースコードをダウンロードするのですが、そのためにはhgコマンドが必要になります。あいにくhgコマンドは入っていなかったので、yummercurialパッケージをダウンロード&インストール。

$ sudo yum install mercurial

続いてソースのダウンロード。

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

Goの開発環境をビルド&インストールします。

$ cd $GOROOT/src
$ ./all.bash

これで完了。Goコンパイラである「8g」がインストールされていることを念のため確認。

$ which 8g
/usr/local/go/bin/8g

Hello, world

プログラムの事始め。お約束の「Hello, world」プログラムを書いてみましょう。

package main
import "fmt"
 
func main()
{
    fmg.Printf("Hello, world!\n");
}

上記のソースを「hello.go」という名前で保存します。

今はインストールの流れで$GOROOTなどの環境変数が設定されている状態ですが、コンパイル時にも同様に環境変数が設定されていなければなりません。~/.bashrcあたりで環境変数の設定を追加しておくのが得策でしょう。

それではコンパイル&実行してみましょう!

$ ls
hello.go
$ 8g hello.go
$ ls
hello.8     hello.go
$ 8l hello.8
$ ls
8.out       hello.8     hello.go
$ ./8.out
Hello, world!

8gがコンパイラ、8lがリンカです。実行ファイルが8.outとして生成されますが、これはgccがデフォルトでa.outを生成するのに似ていますね。リンカオプション-o <file>で出力ファイル名を指定できます。

$ 8l -o hello.8
$ ls
hello       hello.8     hello.go

Makefileを使う場合

最後にmakeコマンドを使ってビルドするためのMakefileの雛型を紹介します。

include $(GOROOT)/src/Make.$(GOARCH)
 
TARG = hello
GOFILES = hello.go
 
include $(GOROOT)/src/Make.cmd

TARGには実行ファイル名を、GOFILESにはコンパイルするソースファイルを列挙していきます。Makefileとして保存してmakeコマンドを実行してみましょう。

$ ls
hello.go    Makefile
$ make
8g -o _go_.8 hello.go
8l -o hello _go_.8

Goの公式サイトには充実したドキュメントが揃っていますね。C++プログラマの私にとって、Go For C++ Programmersのエントリは興味をそそられます(まだ読んでいませんが)。

タグ:

コメントをどうぞ