Windows上的golang cgo退出状态2

时间:2017-04-13 15:37:43

标签: windows go cgo exitstatus

尝试

我想在安装了Windows 8.1的{​​{1}}计算机上编译以下代码段。

Go 1.8.1

这是一个有效的Ideone Snippet

问题

虽然在package main /* int theAnswer() { return 42; } */ import "C" import "fmt" func main() { fmt.Println(C.theAnswer()) } 中运行代码片段的工作正常,但我自己的机器上的编译却以某种方式失败:

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 给出相同的输出)

谷歌搜索了几个小时没有任何有用的结果后,我现在对此表示不满。

环境

问题

有没有人知道为什么会这样?

我个人猜测MingW装置出了问题。如果是这样的话,我会很欣赏如何正确设置MingW for cgo。

1 个答案:

答案 0 :(得分:1)

您的代码适用于Windows 10和7以及Linux。例如,在Windows 10上,使用TDM-GCC表示MinGW,

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