Windows 上的 golang cgo 退出状态 2
golang cgo exit status 2 on Windows
尝试
我想在安装了 Go 1.8.1
的 Windows 8.1
机器上编译以下代码片段。
package main
/*
int theAnswer() {
return 42;
}
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.theAnswer())
}
这是一个有效的 Ideone Snippet。
问题
虽然 运行 ideone
中的代码片段按预期工作,但我自己的机器上的编译不知何故失败了:
$ CC=gcc GOARCH=amd64 GOOS=windows go build -x
WORK=C:\Users\****\AppData\Local\Temp\go-build775642990
mkdir -p $WORK\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\
mkdir -p $WORK\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\exe\
cd D:\dev\workspaces\go\src\github.com\nopmind
CGO_LDFLAGS="-g" "-O2" "C:\Go\pkg\tool\windows_amd64\cgo.exe"
-objdir "C:\Users\****\AppData\Local\Temp\go-build775642990\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\"
-importpath _/D_/dev/workspaces/go/src/github.com/nopmind
-- -I "C:\Users\****\AppData\Local\Temp\go-build775642990\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\"
-g -O2 Test.go
go build _/D_/dev/workspaces/go/src/github.com/nopmind: C:\Go\pkg\tool\windows_amd64\cgo.exe: exit status 2
($ go build -x
给出相同的输出)
在谷歌搜索几个小时后没有任何有用的结果,我现在很难解决这个问题。
环境
问题
有人知道为什么会这样吗?
个人猜测是MingW安装有问题。如果是这样,我将不胜感激如何为 cgo 正确设置 MingW 的简短说明。
您的代码适用于 Windows 10 和 7 以及 Linux。例如,在 Windows 10 上,对 MinGW 使用 TDM-GCC,
Microsoft Windows [Version 10.0.15063]
>go version
go version devel +dc0f0ab Thu Apr 13 18:20:38 2017 +0000 windows/amd64
>gcc --version
gcc (tdm64-1) 5.1.0
>type answer.go
package main
/*
int theAnswer() {
return 42;
}
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.theAnswer())
}
>go run answer.go
42
>
我没用过Win-builds.
尝试
我想在安装了 Go 1.8.1
的 Windows 8.1
机器上编译以下代码片段。
package main
/*
int theAnswer() {
return 42;
}
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.theAnswer())
}
这是一个有效的 Ideone Snippet。
问题
虽然 运行 ideone
中的代码片段按预期工作,但我自己的机器上的编译不知何故失败了:
$ CC=gcc GOARCH=amd64 GOOS=windows go build -x
WORK=C:\Users\****\AppData\Local\Temp\go-build775642990
mkdir -p $WORK\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\
mkdir -p $WORK\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\exe\
cd D:\dev\workspaces\go\src\github.com\nopmind
CGO_LDFLAGS="-g" "-O2" "C:\Go\pkg\tool\windows_amd64\cgo.exe"
-objdir "C:\Users\****\AppData\Local\Temp\go-build775642990\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\"
-importpath _/D_/dev/workspaces/go/src/github.com/nopmind
-- -I "C:\Users\****\AppData\Local\Temp\go-build775642990\_\D_\dev\workspaces\go\src\github.com\nopmind\_obj\"
-g -O2 Test.go
go build _/D_/dev/workspaces/go/src/github.com/nopmind: C:\Go\pkg\tool\windows_amd64\cgo.exe: exit status 2
($ go build -x
给出相同的输出)
在谷歌搜索几个小时后没有任何有用的结果,我现在很难解决这个问题。
环境
问题
有人知道为什么会这样吗?
个人猜测是MingW安装有问题。如果是这样,我将不胜感激如何为 cgo 正确设置 MingW 的简短说明。
您的代码适用于 Windows 10 和 7 以及 Linux。例如,在 Windows 10 上,对 MinGW 使用 TDM-GCC,
Microsoft Windows [Version 10.0.15063]
>go version
go version devel +dc0f0ab Thu Apr 13 18:20:38 2017 +0000 windows/amd64
>gcc --version
gcc (tdm64-1) 5.1.0
>type answer.go
package main
/*
int theAnswer() {
return 42;
}
*/
import "C"
import "fmt"
func main() {
fmt.Println(C.theAnswer())
}
>go run answer.go
42
>
我没用过Win-builds.