はじめに
こんにちは。インフラエンジニアレベル1のf_prgです。
Goxというクロスコンパイルするパッケージがあるので紹介したいと思います。
go言語の管理ツールのgom(Go Manager)を使うの記事で扱っておりましたので、内容はほぼ同じようになります。
Gomfileを作成します
[f_prg@gom] $ gom gen gomfile [f_prg@gom] $ ls Gomfile [f_prg@gom] $ vim Gomfile [f_prg@gom] $ cat Gomfile gom "github.com/mitchellh/gox"
パッケージをインストールします
[f_prg@gom] $ gom install downloading github.com/mitchellh/gox [f_prg@gom] $ ls Gomfile _vendor
パッケージを使って、ビルドします
goxを使ってビルドをすると各種プラットフォームの実行ファイルが生成されます。
windowsのexeも作られます。
[f_prg@gom] $ gom exec gox -build-toolchain The toolchain build can't be parallelized because compiling a single Go source directory can only be done for one platform at a time. Therefore, the toolchain for each platform will be built one at a time. --> Toolchain: darwin/386 --> Toolchain: darwin/amd64 --> Toolchain: linux/386 --> Toolchain: linux/amd64 --> Toolchain: linux/arm --> Toolchain: freebsd/386 --> Toolchain: freebsd/amd64 --> Toolchain: openbsd/386 --> Toolchain: openbsd/amd64 --> Toolchain: windows/386 --> Toolchain: windows/amd64 --> Toolchain: freebsd/arm --> Toolchain: netbsd/386 --> Toolchain: netbsd/amd64 --> Toolchain: netbsd/arm --> Toolchain: plan9/386 [f_prg@gom] $ gom exec gox Number of parallel builds: 4 --> darwin/386: _/Users/f_prg/Documents/dev/gom --> darwin/amd64: _/Users/f_prg/Documents/dev/gom --> linux/386: _/Users/f_prg/Documents/dev/gom --> linux/amd64: _/Users/f_prg/Documents/dev/gom --> linux/arm: _/Users/f_prg/Documents/dev/gom --> freebsd/386: _/Users/f_prg/Documents/dev/gom --> freebsd/amd64: _/Users/f_prg/Documents/dev/gom --> openbsd/386: _/Users/f_prg/Documents/dev/gom --> openbsd/amd64: _/Users/f_prg/Documents/dev/gom --> windows/386: _/Users/f_prg/Documents/dev/gom --> windows/amd64: _/Users/f_prg/Documents/dev/gom --> freebsd/arm: _/Users/f_prg/Documents/dev/gom --> netbsd/386: _/Users/f_prg/Documents/dev/gom --> netbsd/amd64: _/Users/f_prg/Documents/dev/gom --> netbsd/arm: _/Users/f_prg/Documents/dev/gom --> plan9/386: _/Users/f_prg/Documents/dev/gom [f_prg@gom] $ ls Gomfile gom_linux_386 gom_openbsd_amd64 _vendor gom_linux_amd64 gom_plan9_386 gom_darwin_386 gom_linux_arm gom_windows_386.exe gom_darwin_amd64 gom_netbsd_386 gom_windows_amd64.exe gom_freebsd_386 gom_netbsd_amd64 main.go gom_freebsd_amd64 gom_netbsd_arm gom_freebsd_arm gom_openbsd_386
goxで生成された実行ファイルを実行してみます
[f_prg@gom] $ ./gom_darwin_amd64 Hello, Gom
まとめ
GomとGoxを組み合わせると
パッケージ管理とクロスプラットフォームの構築が容易になりそうです。
補足、おまけ
windowsのexeは、検証しておりません。
参考資料・リンク
https://github.com/mitchellh/gox