Go arm64编译 HWCap redeclared in this block错误
【现象】
在新的环境上,编译一个go的组件Mind X Dl volcano时,发现之前一直可以编译的工程,编译失败了,报如下错误信息:
# internal/cpu
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:12:5: HWCap redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:12:5
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:16:2: hwcap_AES redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:20:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:17:2: hwcap_PMULL redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:21:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:18:2: hwcap_SHA1 redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:22:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:19:2: hwcap_SHA2 redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:23:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:20:2: hwcap_CRC32 redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:24:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:21:2: hwcap_ATOMICS redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:25:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:22:2: hwcap_CPUID redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:28:24
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:48:11: undefined: getMIDR
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:61:6: isSet redeclared in this block
previous declaration at /usr/local/go/src/internal/cpu/cpu_arm64.go:100:34
/usr/local/go/src/internal/cpu/cpu_arm64_hwcap.go:48:11: too many errors
Makefile:45: recipe for target 'vc-scheduler' failed
make: *** [vc-scheduler] Error 2
【环境信息】
OS:Ubuntu 18.04.1 LTS (Bionic Beaver)
Go:go1.14.13 linux/arm64
【原因】
在安装go新版本的时候,直接执行解压覆盖,未删除之前的低版本的go。
【规避方法】
删除go的安装,重新解压。
root@worker02:/home/package# rm -rf /usr/local/go
root@worker02:/home/package# go
-bash: /usr/local/go/bin/go: No such file or directory
root@worker02:/home/package# ll
total 1273328
drwxr-xr-x 2 root root 4096 Apr 13 17:31 ./
drwxr-xr-x 4 root root 4096 Apr 13 17:42 ../
-rw-r--r-- 1 root root 101310539 Apr 13 17:24 go1.14.13.linux-arm64.tar.gz
-rw-r--r-- 1 root root 1202554117 Apr 13 17:29 gopath.tar.gz
root@worker02:/home/package# tar -C /usr/local -xzf go1.14.13.linux-arm64.tar.gz
root@worker02:/home/package# go
重新编译成功:
go get github.com/mitchellh/gox
CGO_ENABLED=0 gox -osarch=linux/arm64 -ldflags " -X 'volcano.sh/volcano/pkg/version.GitSHA=`git rev-parse HEAD`' -X 'volcano.sh/volcano/pkg/version.Built=`date "+%Y-%m-%d %H:%M:%S"`' -X 'volcano.sh/volcano/pkg/version.Version=v0.4.0-r03'" -output _output/bin/linux/arm64/vcctl ./cmd/cli
fatal: not a git repository (or any of the parent directories): .git
Number of parallel builds: 191
--> linux/arm64: volcano.sh/volcano/cmd/cli
for name in controller-manager scheduler webhook-manager; do\
CGO_ENABLED=0 gox -osarch=linux/arm64 -ldflags " -X 'volcano.sh/volcano/pkg/version.GitSHA=`git rev-parse HEAD`' -X 'volcano.sh/volcano/pkg/version.Built=`date "+%Y-%m-%d %H:%M:%S"`' -X 'volcano.sh/volcano/pkg/version.Version=v0.4.0-r03'" -output _output/bin/linux/arm64/vc-$name ./cmd/$name; \
其中的fatal为git错误,没关系。