使用Golang竞赛检测器生成错误

时间:2018-08-08 04:25:20

标签: go build

我的软件可以编译并正常运行,但是当我添加-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时,我可以找出原因吗?

其他信息: 我可以使用以下方法在终端上进行构建:

  

开始构建-race

问题似乎是由GoLand添加到命令行的-a选项引起的,因为此几乎相同的命令行失败:

  

转到build -race -a。

但这没关系:

  

开始构建-a。

2 个答案:

答案 0 :(得分:1)

最新更新:我通过升级已安装的GCC版本来构建它(稍后)。

答案 1 :(得分:0)

详细信息在此issue中。 解决方法通常是设置-vet=off