【发布时间】:2015-12-02 02:20:47
【问题描述】:
我遇到了所有挂在 Windows 上的 Go 程序的问题,甚至是一个简单的 Hello world 程序。我已经多次重新安装了 Golang,没有任何改变。我也不能使用 Ctrl+X 或 Ctrl+D 来关闭程序。它仍然会产生将显示在进程监视器上的进程。但我不能从那里或从命令行杀死它。
在 reddit https://www.reddit.com/r/golang/comments/2lvnqk/not_even_hello_world_works/ 上发布了与此类似的问题。但这仍然没有解决方案。
这是我现在要运行的程序:
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
使用go run -x 运行它会得到以下输出:
WORK=C:\Users\User\AppData\Local\Temp\go-build882050150
mkdir -p $WORK\command-line-arguments\_obj\
mkdir -p $WORK\command-line-arguments\_obj\exe\
cd E:\go\src\github.com\test\hello
"C:\\Go\\pkg\\tool\\windows_amd64\\compile.exe" -o "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments.a" -trimpath "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -p main -complete -buildid 0180ed6e175ea3e4bc497fc21fe0319a733a9c8e -D _/E_/go/src/github.com/test/hello -I "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -pack "E:\\go\\src\\github.com\\test\\hello\\main.go"
cd .
"C:\\Go\\pkg\\tool\\windows_amd64\\link.exe" -o "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments\\_obj\\exe\\main.exe" -L "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150" -w -extld=gcc -buildmode=exe -buildid=0180ed6e175ea3e4bc497fc21fe0319a733a9c8e "C:\\Users\\User\\AppData\\Local\\Temp\\go-build882050150\\command-line-arguments.a"
$WORK\command-line-arguments\_obj\exe\main.exe
之后它就坐在那里,什么也不吃。不管我运行什么程序,它都会永远挂起。
不知道从这里去哪里。我并没有真正在 Windows 上开发,但我试图在 Ubuntu 上使用交叉编译,并且在使用交叉编译的二进制文件时遇到了这个问题,我想我会尝试直接在 Windows 上编译。但似乎我的 Windows 不喜欢 Golang 编译的二进制文件。
Go 版本是 1.5.1 windows/amd64。
这是go env的输出:
set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\go
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GO15VENDOREXPERIMENT=
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
【问题讨论】:
-
您是否正在运行任何类型的防病毒软件?
-
@JimB,是的。 Avast 阻止所有 go 文件运行,因为它们与更常见的 C 编译二进制文件相比有多么不同。最终排除了我安装 Go 和我的 GOPATH 的目录。还必须为 Go 在运行程序时使用的临时目录添加一个排除项。对我来说是
C:\Users\user\AppData\Local\Temp\go-build*\*。为 File System Shield 和 General 下的排除部分添加了排除项。 -
@JDWardle 如果您自己找到了解决方案,您应该post an answer 让有同样问题的人更容易看到它。
标签: go windows-10