golang二进制文件未在mips上运行

I'm using Go 1.11.4 on Windows 10 and I want to compile code for a MIPS 74Kc processor (Qualcomm Atheros QCA9558) running Linux. I compile with:

GOOS=linux GOARCH=mips go build

Get an executable, upload and run it and get:

Illegal instruction

Try again w/ GOARCH=mipsle and get:

./hello_mipsle_linux: line 1: syntax error: unexpected "("

What am I missing?

To list all possible MIPS architects available to your current build toolchain, use the go tool e.g.

$ go version

go version go1.12 darwin/amd64

$ go tool dist list | grep mips

linux/mips
linux/mips64
linux/mips64le
linux/mipsle

so probably one of the remaining GOARCH permutations you have not tried e.g. mips64 or mips64le.

uname -m would help to determine your target system's machine architecture.

My host doing the build had an FPU but the board does not. This fixed it:

GOOS=linux GOARCH=mips GOMIPS=softfloat go build