【问题标题】:golang cgo exit status 2 on WindowsWindows上的golang cgo退出状态2
【发布时间】:2017-09-09 19:45:18
【问题描述】:

尝试

我想在安装了Go 1.8.1Windows 8.1 机器上编译以下sn-p。

package main

/*
int theAnswer() {
    return 42;
}
*/
import "C"

import "fmt"

func main() {
    fmt.Println(C.theAnswer())
}

这是一个有效的Ideone Snippet

问题

虽然在ideone 中运行 sn-p 按预期工作,但在我自己的机器上编译却以某种方式失败:

$ 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 go cgo exitstatus


    【解决方案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

    【讨论】:

    • 好吧,我现在尝试使用TDM-GCC(完全忘记了那个)并且它有效!似乎不支持 Win-Build 包。谢谢!
    猜你喜欢
    • 2021-11-28
    • 2020-05-07
    • 2016-10-11
    • 1970-01-01
    • 2021-05-30
    • 2015-12-17
    • 2018-04-02
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多