memoメモ

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

Go言語でLinux ARM用の実行ファイルをビルドする

以前、Go言語でクロスコンパイルする方法を書いたけれど、ARM用にビルドする手順をまとめとく。

前提として、Go言語をソースコードからコンパイルできる環境が必要です。 ここが参考になります: http://golang.org/doc/install/source

GoのLinux ARMコンパイラの準備

$ cd GOROOT/src
$ export GOOS=linux; export GOARCH=arm; ./make.bash 
...
 (ビルド...)
...

これでコンパイルの準備は完了です。

なお、以下のように、 go tool コマンドでARM関連の 5g,5l,5c,5a コンパイラ群がみえていることを確認しておきましょう:

$ go tool
5a
5c
5g
5l
6a
6c
6g
6l
addr2line
api
cgo
dist
fix
nm
objdump
pack
pprof
vet
yacc

ARM用にクロスコンパイル

コンパイルは以前の例と同様に:

$ GOOS=linux GOARCH=arm go build helloworld.go  

とする。ただ、ARMをrev6以外のバージョンで使う場合は、 GOARM=5 などを付けて:

$ GOOS=linux GOARCH=arm GOARM=5 go build helloworld.go 

というようにする必要があるようです(参考GoArm)。

fileの結果はこんな感じ:

$ file helloworld
helloworld: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped

他の環境向けは?

ちなみに他の環境用にクロスコンパイルする場合は:

http://golang.org/doc/install/source#environment

を参考に $GOOS$GOARCH を設定するといいでしょう。

参考になるページ