MacでGoのクロスコンパイルをする

Mac OSはMojaveでGoは1.13.4です。

昔、

gozuk16.hatenablog.com

というのを書いたのですが、いまはbrew--cross-compile-common--with-cc-common も使えないようです。

github.com

これに書いてなければだめなんですよね?

どうやら

GOOS=linux GOARCH=amd64 go build ./hogehoge.go

ってやるだけでできるっぽい。素晴らしい! このままだと区別つかないのでディレクトリごとに出すように。

GOOS=linux GOARCH=amd64 go build -o linux-amd64/hogehoge ./hogehoge.go

あとでmakefileでも書きますか。。。

追記(2019/12/24)
makefile 書きました。

linux:
  GOOS=linux GOARCH=amd64 go build -o linux-amd64/hogehoge ./hogehoge.go
win:
  GOOS=windows GOARCH=amd64 go build -o windows-amd64/hogehoge.exe ./hogehoge.go

ついでにWindowsも入れときました。

更にcgo使ってるときに

# runtime/cgo
gcc_libinit_windows.c:7:10: fatal error: 'windows.h' file not found

というエラーが出たので以下のようにビルドしました。

$ brew install mingw-w64
$ CC=x86_64-w64-mingw32-gcc CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -o hogehoge.exe