Я могу подтвердить, что то, что вы пытаетесь достичь, работает для меня в Windows 7 и Windows 10 с версией 1.10.2.
Чтобы убедиться, что ваша установка go поддерживает желаемую цель, выполните следующую команду:
go tool dist list | find "linux/amd64"
Вы должны убедиться, что вы задали переменные среды без каких-либо дополнительных или скрытых пробелов, установите их следующим образом:
set GOOS=linux
set GOARCH=amd64
Затем проверьте, например, так:
echo !%GOOS%!
echo !%GOARCH%!
Если комбинация недействительна, вы должны получить это сообщение:
cmd / go: неподдерживаемая пара GOOS / GOARCH linux / amd64
После этого запустите вашу сборку:
go build -v -x -o foreign_linux foreign.go
Следуя совету Volkers, вы можете проверить, действительно ли созданный бинарный файл является бинарным для Linux:
type foreign_linux
Вы получите несколько загадочных символов, но в начале первой строки должно быть ELF
. Если это exe, вы увидите MZ
.