当 GOARCH=386 并导入“C”

问题描述

我正在使用 CGO 包导入 C 代码,我想构建它的 x86 (386) Windows 版本。我发现这应该通过设置 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
.
.
.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)