我的软件编译并运行良好,但是当我添加 -race 选项来检查竞争条件时,它不会构建:
GOROOT=C:\Go
GOPATH=<deleted>;D:\Golang
C:\Go\bin\go.exe build -race -o C:\Users\Andrewp\AppData\Local\Temp\___1Race_Detector.exe -gcflags "-N -l" -a <deleted>
# runtime/cgo
gcc_libinit_windows.c: In function 'x_cgo_sys_thread_create':
gcc_libinit_windows.c:56:12: error: implicit declaration of function '_beginthread' [-Werror=implicit-function-declaration]
thandle = _beginthread(func, 0, arg);
^
cc1: all warnings being treated as errors
Compilation finished with exit code 2
请注意,它以前工作过,但我已经升级到 go1.9.2 windows/amd64 版本(尽管我认为这无关)。还安装了 MSYS。
此外,我正在使用 GoLand(在 Windows 10 下)进行构建,但是当我从命令行构建时遇到了同样的问题。
有没有人有关于 Go 编译器如何工作的信息,尤其是。使用比赛检测器或 cgo 时,我可以找出原因吗?
额外信息:
我可以使用以下方法从终端构建良好:
go build -race
问题似乎是由 GoLand 添加到命令行的 -a 选项引起的,因为这个几乎相同的命令行失败了:
go build -race -a .
但这没关系:
go build -a .
最佳答案
详情在此issue .
解决方法通常是设置 -vet=off
关于go - 使用 golang 竞赛检测器构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738607/