2011年3月8日火曜日

Fedora 14 に Go 言語をインストール

ふと目にとまってしまった Go 言語を、少し試してみようと、まずは、Fedora 14 x86_64 へインストールしてみました。
手順(各所に情報があるようですが)とログをメモしておきます。

まず、root で必要なものをインストールします。特に、Mercurial を。
[root@fedora14 ~]# cat /etc/redhat-release 
Fedora release 14 (Laughlin)
[root@fedora14 ~]# uname -a
Linux fedora14 2.6.35.10-74.fc14.x86_64 #1 SMP Thu Dec 23 16:04:50 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux

[root@fedora14 ~]# yum install '*mercurial*'
途中省略

[root@fedora14 ~]# rpm -q bison gcc libc6-dev ed gawk make  ※必要なものを確認
bison-2.4.3-1.fc14.x86_64
gcc-4.5.1-4.fc14.x86_64
package libc6-dev is not installed  ※これは、既に名前が変わったのか、不要でした
ed-1.4-2.fc14.x86_64
gawk-3.1.8-3.fc14.x86_64
make-3.82-3.fc14.x86_64
次に一般ユーザでの作業です。
[user00@fedora14 ~]$ cat .bashrc  ※環境変数を設定します
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

export GOROOT=$HOME/go  ※この4行をvi等で追加
export GOOS=linux
export GOARCH=amd64
export GOBIN=$HOME/bin

[user00@fedora14 ~]$ source .bashrc
[user00@fedora14 ~]$ mkdir $GOROOT
[user00@fedora14 ~]$ mkdir $GOBIN

※次の Mercurial のコマンド hg で、リポジトリからソースその他一式をゲット
[user00@fedora14 ~]$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
warning: go.googlecode.com certificate with fingerprint b1:af:83:76:f3:81:b0:57:70:d8:07:42:c8:c1:b3:67:38:c8:7a:bc not verified (check hostfingerprints or web.cacerts config setting)
adding changesets
adding manifests
adding file changes
added 7570 changesets with 29247 changes to 4124 files
updating to branch default
2508 files updated, 0 files merged, 0 files removed, 0 files unresolved

※ビルドを実行
[user00@fedora14 ~]$ cd $GOROOT/src
[user00@fedora14 src]$ ./all.bash 
rm -f *.o y.tab.[ch] y.output a.out lib9.a
rm -f *.o y.tab.[ch] y.output a.out libbio.a
rm -f *.o y.tab.[ch] y.output a.out libmach.a
rm -f *.o y.tab.[ch] y.output a.out cc.a
途中省略

--- cd ../test
1 known bugs; 0 unexpected bugs  ※ちょっと気になりますが…後述の helloworld.go は動きました。

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/user00/go.
Installed commands in /home/user00/bin.
The compiler is 6g.
[user00@fedora14 src]$ 
お試しに helloworld.go です。
package main

import "fmt"

func main() {
        fmt.Printf("hello, world\n")
        return
}
これを、6g および 6l にかけると、6.out という実行モジュールが生成されます。
[user00@fedora14 ~]$ 6g helloworld.go    ※コンパイル
[user00@fedora14 ~]$ ls -l helloworld.6
-rw-rw-r-- 1 user00 user00 5750 Mar  8 22:52 helloworld.6
[user00@fedora14 ~]$ 6l helloworld.6     ※リンク
[user00@fedora14 ~]$ ls -l 6.out 
-rwxrwxr-x 1 user00 user00 1842238 Mar  8 22:53 6.out
[user00@fedora14 ~]$ ./6.out    ※実行
hello, world
コマンド先頭が数字というのは、結構、違和感があります。bash の history もうまく動かないです。!6g などとやると、history の 6番目 のコマンドが呼び出されてしまいます。

0 件のコメント:

コメントを投稿

人気ブログランキングへ にほんブログ村 IT技術ブログへ