write ahead log

ロールフォワード用

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