运行错误:Illegal instruction
搜索得知:https://github.com/golang/go/issues/18483
大致含义是指很有可能是由于CPU不支持VFP特性导致的问题,通过/proc/cpuinfo
查看得知:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 1 (v7l)
BogoMIPS : 1594.16
Features : half thumb fastmult edsp tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
Hardware : ZTE ZX279127 (Device Tree)
Revision : 0000
Serial : 0000000000000000
|
看到不支持vfp,提示使用GOARM=5进行编译,于是编译命令如下:
1
|
GOARM=5 GOARCH=arm GOOS=linux CGO_ENABLED=0 go build -ldflags "-extldflags '-static' -w -s " -o main-armv5
|
问题解决。
关于VFP(Vector Floating Point)是浮点处理单元协处理器,提供低功耗的单精度和双精度浮点计算,更多的资料可以查看WiKi: https://en.wikipedia.org/wiki/ARM_architecture