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