golangで色々なOSのバイナリを作る
前も調べたけど記録してなかったので忘れた.今度はメモっとく.
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