MacでGoのクロスコンパイルをする
Mac OSはMojaveでGoは1.13.4です。
昔、
というのを書いたのですが、いまはbrewで --cross-compile-common
も --with-cc-common
も使えないようです。
これに書いてなければだめなんですよね?
どうやら
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