How to CrossCompile Go programs on Windows 10

set is an internal command of the Windows command line interpreter (cmd.exe).

If you're using PowerShell, then changing values of environment variables should be done like:

$Env:<variable-name> = "<new-value>"

For more details, see PowerShell documentation: About Environment Variables

So to change GOOS, use:

$Env:GOOS = "linux"

To do a cross-compilation:

  1. Navigate to the folder where the main package is.

  2. Run $Env:GOOS = "linux"

  3. Optionally run $Env:GOARCH = "amd64"

  4. Run go build

Or you can do it in a single line:

$Env:GOOS = "linux"; $Env:GOARCH = "amd64"; go build

To specify the output file name:

$Env:GOOS = "linux"; $Env:GOARCH = "amd64"; go build -o hello