登录
首页 >  Golang >  Go问答

构建一个错误的 Golang 竞赛检测器

来源:stackoverflow

时间:2024-03-13 12:54:26 106浏览 收藏

一分耕耘,一分收获!既然都打开这篇《构建一个错误的 Golang 竞赛检测器》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我的软件编译并运行良好,但当我添加 -race 选项来检查竞争条件时,它不会构建:

GOROOT=C:\Go

GOPATH=;D:\Golang

C:\Go\bin\go.exe build -race -o C:\Users\Andrewp\AppData\Local\Temp\___1Race_Detector.exe -gcflags "-N -l" -a 

# 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

请注意,它以前有效,但我已经升级到 go 版本 go1.9.2 windows/amd64 (尽管我不认为这是相关的)。还安装了 msys。

此外,我正在使用 goland 进行构建(在 windows 10 下),但当我从命令行构建时,我遇到了同样的问题。

有人知道 go 编译器如何工作的信息吗?当使用竞赛检测器或 cgo 时,我可以找出原因吗?

额外信息: 我可以使用以下命令从终端构建良好的内容:

去建造比赛

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

去构建-race-a。

但这没关系:

去构建 -a 。


解决方案


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

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

以上就是《构建一个错误的 Golang 竞赛检测器》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>