go构建约束问题,Build constraints exclude all Go files in ?

image.png

set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\38114\AppData\Local\go-build
set GOENV=C:\Users\38114\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\38114\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\38114\AppData\Local\Temp\go-build025999686=/tmp/go-build -gno-record-gcc-switches
阅读 65k
7 个回答

这是go的条件编译导致的,具体的方法是在go文件的第一行注释写//+build linux表明这个文件在Linux平台才能编译。参考代码:

//+build linux darwin windows
// +build后可以跟多个平台,用空格隔开表示或,用逗号分隔表示与
// linux darwin windows:表示linux darwin windows都可以编译
// linux,386: 表示Linux并且是386平台才可以编译
// 参考:https://www.gitdig.com/post/2019-07-08-go-comment/

package main

import "fmt"

func main() {
    fmt.Println("hello")
}

请问解决了吗,我也是这个问题,上网也搜不到答案。。。

我是另一个包在goland下报同样的错。
解决方法:把GOOS改成linux
GOOS="linux"

新手上路,请多包涵

我也遇到这个问题,同样的提示,然后我在项目源码目录下执行 go get -u -v github.com/karalabe/xgo ,就正常了;参考博客(https://blog.csdn.net/qq_2215...

新手上路,请多包涵

我是进到$GOPATH目录下,把对应的包删除,重新go get,解决,不知道能不能帮到你

新手上路,请多包涵

我报这个错的原因是,在当前import的路径里面这级目录下没有.go的文件,然后进入下一级目录有go文件后能正常引用了,供大家参考。

看来,不同情况都会导致这个问题,我这边是项目中使用了 CGO,然后 CGO 默认没有开启,导致无法编译。
因此 export CGO_ENABLED=1 之后,确保本地有 gcc 环境,没有可以下载(win 下可以下载 TDM-GCC-64 并配置 PATH 环境变量)。CGO_ENABLED 开启后,便能编译成功。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏