2013年9月22日日曜日

ARM端末(Android)でGo開発をする

こんにちは。scarvizです。

僕もついに新型Nexus7を手に入れました!

というわけで、早速ごにょごにょしてroot化して、ごにょごにょしてubuntu入れました(※1)。
1stと違って、まだマルチブート環境が整ってないので、Android上でubuntu(12.04)が動くようにしたのですが、ubuntuが動くようになったので、当然Goの開発環境を整えたくなりますよね!
というか、むしろそれが目的だったので(※2)。

基本的には普段使っているようにubuntuを操作すればいい(※3)のですが、Goの開発環境を整えようと思うと、インストーラがARMに対応しているものが無い(※4)ので、いつものようには環境は整えられません。
ただ、GoはARMでコンパイルすることは出来る(※5)ので、Goソースをビルドして開発環境を整えることにしました。

手順はとても簡単で、下記の通りなのですが、せっかくなので今回はその紹介をします。
http://golang.org/doc/install/source

※1 ごにょごにょ部分は調べたら結構すぐ出てくるので、説明は省略。あと、あくまで自己責任で。
※2 新型Nexus7のスペックが凄く良くて、USBホストもありますし、電池持ちも良いそうなので、手軽な開発環境として良かったんですね。最終形態は最後に載せてます。
※3 ただ、なぜかGUI環境がうまく構築できませんでした。まあ、Vimで開発するので必要ないんですが。
※4 どうやら、ARMって言っても広くいっぱい使われているので、検証が出来ないからインストーラは用意されてないようです。
※5 サポートされているのはLinuxのみっぽいです。WinRT(Win8のARM版)で出来ないかもしれません。残念。




■Mercurialをインストールする
GoのソースはリポジトリがMercurialなので、Mercurialがインストールされていない場合は、インストールしましょう。

apt-get install mercurial

確認としてバージョンを見てみます。

hg -v --version

「Mercurial Distributed SCM (version 2.0.2)」のように表示されてればOKです。
※バージョンは最新のものが表示されると思います。この時点ではversion 2.0.2です。


■Goのソースを取得する
リポジトリからソースを取得すると、カレントディレクトリにgoディレクトリが作成されます。
まずは適当なディレクトリに移動しておきましょう。
移動し終わったら、ソースを取得します。

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

確認としてgoディレクトリ以下を見てみます。

cd go
ls

以下のように出てくればOKです。
※バージョンによって若干違うかもしれません。

AUTHORS       LICENSE  README   api  favicon.ico  lib   robots.txt  test
CONTRIBUTORS  PATENTS  VERSION  doc  include      misc  src


■Goソースをビルドする
Goソースをビルドしましょう。src以下にビルド用のbashファイルが用意されているので、それを実行するだけです。
ビルドが終わるまであまり時間はかかりませんが、Androidの場合、スリープすると処理が止まってしまうかもしれないので、スリープまでの時間を延ばすか、スリープ機能を止めておいた方が良いかもしれません。

cd go/src
./all.bash

最後に「*** You need to add /(ソース取得したディレクトリ)/go/bin to your $PATH. ***」と表示されていればOKです。
$PATHを「/(ソース取得したディレクトリ)/go/bin」、$GOROOTを「/(ソース取得したディレクトリ)/go」に設定して変更を反映してください。
※ちなみに僕の環境では、「source .profile」で更新したつもりだったのですが、なぜか反映されていなかったので、この後ログインしなおしました。

確認として、Goのバージョンを見てみましょう。

go version

結果:
go version go1.1.2 linux/arm

ちゃんとARM版になっていますね。
もし、今後バージョンアップした場合は、次のようにしてビルドしなおせばよいそうです。

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


これでGo開発がAndroid端末で出来るようになりました!
ゆっくり座って開発できる環境なら、Nexus7はUSBホスト機能があるので、下のようにキーボードをつなげての開発ができます。HHKBにはついているので必要ないですが、USBハブも挟めるので、マウスとかUSBメモリとかつなぎ放題ですよ。
軽くて持ち運びにも困らないですし、色々なところでGo開発が楽しめますね!

これが最終形態だ!

0 件のコメント:

コメントを投稿