30

I am currently working on Mac OS X, now I need to build a .exe file so that the Go program can run on windows. So here is the question, how to build a executable file for Win X86 under MacOS amd64 ? or Is it impossible to do so ?

pjs
  • 18,696
  • 4
  • 27
  • 56
Gizak
  • 854
  • 2
  • 11
  • 21

2 Answers2

33

If you don't use CGo but pure Go, then it's perfectly doable and standard.

First you have to make the Go environment on your development computer for the targets. Supposing your Go installation is in ~/var/go, this may be this :

cd ~/var/go/src
CGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash

Then you compile with the good GOOS and GOARCH :

GOOS=windows GOARCH=386 go build -o hello.exe hello.go

Here's the go-wiki page on building a windows exe on linux.

Denys Séguret
  • 372,613
  • 87
  • 782
  • 758
8

I've used Dave Cheney's tutorial and accompanying shell scripts to build binaries for linux, windows and OS X on linux just fine. (Used by my stressdisk project)

It is exactly the same method as described by dystroy just with step by step instructions and a few helpful shell aliases.

Update Feb 2021

If you want to plug something into your CI then I recommend goreleaser - this can automatically cross compile for a variety of OSes and build packages too. If you want to see an example check out the stressdisk releases page built entirely with goreleaser - see the config and the instructions

Nick Craig-Wood
  • 52,955
  • 12
  • 126
  • 132