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
を設定するといいでしょう。