前も調べたけど記録してなかったので忘れた.今度はメモっとく.
golangで他のプラットフォーム向けにクロスコンパイルするには環境変数を指定してbuildすれば良いらしい.
環境変数は
- GOOS
- GOARCH
があってそれぞれOSとCPUアーキテクチャを表している.
Linux環境でもwindowsの64bitバイナリを作るときには
GOOS=windows GOARCH=amd64 go build
とすれば良い.
選択できるOSとアーキテクチャについては公式に記載がある.
2016/4/17現在では
$GOOS $GOARCH darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips64 linux mips64le netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm plan9 386 plan9 amd64 solaris amd64 windows 386 windows amd64
こんな感じ.
もう十分じゃない?ってくらいある.素晴らしい.
毎回win, linux, macの3つ向けにビルドするのが面倒なので素朴なスクリプトを書いた.
あまり凝ってはいないけど,どこでも動くと思うし誰でも手を入れれると思う.
gist9cb8979e163e89ae6a88fd650291fd12
実行結果は以下.
サンプルとしてgdcをビルドした
twinbird@:~/Dropbox/go/src/gdc$ ./make.sh gdc twinbird@:~/Dropbox/go/src/gdc$ ls LICENSE bin github_access_test.go make.sh README.md github_access.go main.go twinbird@:~/Dropbox/go/src/gdc$ tree bin/ bin/ ├── darwin386 │ └── gdc ├── darwin64 │ └── gdc ├── linux386 │ └── gdc ├── linux64 │ └── gdc ├── windows386 │ └── gdc.exe └── windows64 └── gdc.exe 6 directories, 6 files