memoメモ

最近はGo言語関連で。φ(..)メモメモ

Go言語の環境をソースからビルドする #golangjp

Go1がリリースされて以来、各環境のGoコンパイラDownloads - go - The Go Programming Language - Google Project Hosting で簡単にダウンロードできるようになりました。 またLinuxやOSXでも、パッケージマネージャでGoコンパイル環境を整えることもできます。

ただ、Go言語をバリバリ書いていきたいという人には、 Goの環境を自分でコンパイルすることをオススメ します。新しいバージョンがリリースされたらすぐに更新できるようになります。

「え、コンパイラのコンパイルなんてムズカシイんでしょ?」なんて声も聞こえそうですが、そんなこともないです。

OSXの場合、基本的にxcodeさえ入っていればGoのコンパイル環境は整います。

メリットは:

  • Goの新しいバージョンがリリースがされたらすぐに追従できる
  • Goのtip(開発中のもの)を試せる
  • ロスコンパイル環境を簡単に整えられるようになる(ARM LinuxRaspberry PiでもPQI Air Cardでも動かせるよ)
  • ...

といったところでしょうか。

なお、ここに書いた内容は、基本的に Installing Go from source - The Go Programming Language に書いてある内容をやっているだけです。 というわけでさっそくやってみましょう:

事前準備

GoのソースリポジトリMercurial が使われていますので、Mercurialをインストールします。 OSXでhomebrewをつかっている場合は:

$ brew install mercurial

で導入できます。 Linuxなどでも apt や yum でインストールしちゃいましょう:

$ sudo apt-get install mercurial
OR
$ sudo yum install mercurial

ソース取得

置いておきたい場所へ移動し、hg(mercurialのコマンド)を実行します:

$ cd ~/
$ hg clone -u release https://code.google.com/p/go

配置場所にこだわらないのであれば、ホームディレクトリに配置してしまうのがいいでしょう。

ビルド

そして、いよいよビルド:

$ cd go/src
$ ./all.bash

最近のいいマシンを使っていれば、テストも含めて2分程度で完了します。早いですね!

そして:

ALL TESTS PASSED

が出たらおしまい。

仕上げ

.bashrcや.zshrcなどに:

export PATH=$PATH:$HOME/go/bin

を書いておきましょう。

また、必要に応じてGOPATHの設定を書けばよいと思います。 このあたりは How to Write Go Code - The Go Programming Language に詳しく書いてあります。

これで:

$ go version
go version go1.1.2 darwin/amd64

などとでていれば完成です。

更新

これ以後、Goのリリースがあるたびに:

$ cd go/src
$ hg pull
$ hg update release
$ ./all.bash

を実行すればOKです。

参考資料:

その他

開発中のバージョン(tip)にしたい:

$ hg update default

または、

$ hg update tip

リポジトリをスイッチし、ビルドしましょう。

疑問

Q: 昔々、環境変数(GOROOT,GOARCHとかGOOSとか...)をたくさん設定したような記憶があるんだけど。。。

A: ここを読みましょう: あなたがGOROOTを本当に設定しなくていい理由 | Androg Thanks @kwmt27 !!

Q: updateするスクリプトないの。

A: こんなん書いてみました。OSXでしか試してないですが。 : goupdate

おしまい。

プログラミング言語Goフレーズブック

プログラミング言語Goフレーズブック

  • 作者: David Chisnall,デイビッド・チズナール,柴田芳樹
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/10/04
  • メディア: 単行本(ソフトカバー)
  • 購入: 1人 クリック: 5回
  • この商品を含むブログを見る
基礎からわかる Go言語

基礎からわかる Go言語

Raspberry Pi Type B 512MB

Raspberry Pi Type B 512MB

PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1

PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1

入門TortoiseHg + Mercurial

入門TortoiseHg + Mercurial