我正在使用CGO包导入C代码,并希望构建一个适用于Windows的x86
(386)版本。我发现这可以通过设置GOARCH=386
来实现。
在默认环境设置下(GOARCH=amd64),它可以正常构建。但是,当我将环境变量设置为“386”时,出现错误:构建限制排除了我的文件中所有Go文件。
// hello.go
package main
/*
int CFunc() {
}
*/
import "C"
import (
"fmt"
)
func main() {
fmt.Println("Hello, Go!")
}
go.mod
module hello
go 1.16
我做:
go build
我得到:
C:\Users\basse\source\repos\xhptdc8_babel\go\info\hello>go build
package hello: build constraints exclude all Go files in C:\Users\basse\source\repos\xhptdc8_babel\go\info\hello
试验:
- 没有导入"C",我不会出现错误。
- 使用// +build windows,386或// +build windows,386,!cgo,在package main之前,仍然会出现相同的错误。
所有细节都可以在Go Issue中找到。
设置
set CGO_ENABLED=1
生成另一种类型的错误:
F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/lib/libmingwthrd.a when searching for -lmingwthrd
F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/lib\libmingwthrd.a when searching for -lmingwthrd
F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/lib/libmingwthrd.a when searching for -lmingwthrd
F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingwthrd
.
.
.
CGO_ENABLED=1
,就像在那个问题中所提到的一样? - JimBF:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/lib/libmingwthrd.a when searching for -lmingwthrd F:/Work/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmingwthrd . .
- Bassem Ramzy