我想在安装了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。
答案 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。