go - 使用 golang 竞赛检测器构建错误

标签 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 时,我可以找出原因吗?

额外信息:
我可以使用以下方法从终端构建良好:

go build -race



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

go build -race -a .



但这没关系:

go build -a .

最佳答案

详情在此issue .
解决方法通常是设置 -vet=off

关于go - 使用 golang 竞赛检测器构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51738607/

相关文章:

interface - Go:函数回调返回接口(interface)的实现

authentication - 连接到 Azure SQL 数据库时的 Active Directory 身份验证

git - TFS Build 在推送到远程代表时挂起

iphone - 应用程序无法安装在 iPhone 上,但可以在模拟器上运行

c# - 在构建过程中运行 c# 控制台应用程序

go - 使用一个函数初始化结构中的多个值

arrays - 如何将 [ ][2]string 转换为 map[string] 中的字符串?

go - 无法将类型字符串用作 sql.NullString

java - Ant 包含外部项目

c# - TFS 中的内部版本号格式