golangでクロスコンパイルするならgoxライブラリを使うと便利!
こんにちは、つじたく(@Tsuji_Taku50)です。
golangはクロスコンパイルできることが魅力の1つですが、
いかんせんコマンドが長くなる&複雑になりがちです。
そこで今回はgolangでクロスコンパイルを簡単にしてくれるライブラリを見つけたので、紹介します。
リポジトリ
下記が今回紹介するライブラリのリポジトリです。
README.mdに諸々の情報が記載されていますが、1つ1つ見ていきましょう。
インストール方法
% go get github.com/mitchellh/gox
インストールできたか確認するために下記のヘルプコマンドを試してみましょう。
% gox -h Usage: gox [options] [packages] Gox cross-compiles Go applications in parallel. If no specific operating systems or architectures are specified, Gox will build for all pairs supported by your version of Go. Options: -arch="" Space-separated list of architectures to build for -build-toolchain Build cross-compilation toolchain -cgo Sets CGO_ENABLED=1, requires proper C toolchain (advanced) -gcflags="" Additional '-gcflags' value to pass to go build -ldflags="" Additional '-ldflags' value to pass to go build -tags="" Additional '-tags' value to pass to go build -os="" Space-separated list of operating systems to build for -osarch="" Space-separated list of os/arch pairs to build for -osarch-list List supported os/arch pairs for your Go version -output="foo" Output path template. See below for more info -parallel=-1 Amount of parallelism, defaults to number of CPUs -gocmd="go" Build command, defaults to Go -rebuild Force rebuilding of package that were up to date -verbose Verbose mode ・・・
と出力されれば、インストールに成功しています。
通常のクロスコンパイル
% GOOS=linux GOARCH=amd64 go build main.go
またwindows/amd64の環境用にビルドしようとすると
% GOOS=windows GOARCH=amd64 go build main.go
というコマンドになります。
上記のようなコマンドを全部覚えることが可能な人はそれでも良いのですが、毎回毎回ビルド方法を調べて思い出してetc・・・
となると面倒くさいです。
そこでgoxライブラリを使用します。
goxを使用したクロスコンパイル
- goxライブラリが対応している全ての環境用にビルドしたい場合
% gox ./...
- 任意の環境用にビルドしたい場合 (下記はlinux用にビルドしています)
% gox -os="linux" ./...
% gox --osarch "linux/amd64 windows/amd64" ./...
このようなに環境変数を定義しなくても簡単にコンパイルしてくれます。
一度のビルドで複数コンパイルしてくれるもの便利ですね。
まとめ
golangの長所でもあるクロスコンパイルを簡単に実行できるのは、便利ですね。
ただ同時に複数のコンパイルをするので、多少の時間はかかります!
といっても5分かからないほどですが。
おわり!!