如何交叉编译Go to 32 bit windows .exe
How to cross compile Go to 32 bit windows .exe
我需要在我的 64 位 windows 系统下将一组 Go + C 代码编译成 64 位和 32 位 exe。我的编译器是 TDM-GCC-64 9.2.0。 64 位编译很顺利,并创建了一个 .exe 文件。
但是我设置后编译失败
$环境:GOARCH = 386
获取 32 位 exe 文件。错误消息是“main.go:4:2:构建约束排除 C:\Users\xxx\test\src 中的所有 Go 文件”。目录 \src 包含一个测试 c 函数和调用 c 的 go 函数。
请帮忙。谢谢
最后发现关键是设置好4个相关的env变量,32位的程序才能顺利编译。
$env:GOOS="windows"
$env:GOARCH="386"
$env:CGO_ENABLED=1
$env:GOGCCFLAGS="-m32 -mthreads -fmessage-length=0"
go build -x -buildmode=c-shared -o xxx.so main.go
我需要在我的 64 位 windows 系统下将一组 Go + C 代码编译成 64 位和 32 位 exe。我的编译器是 TDM-GCC-64 9.2.0。 64 位编译很顺利,并创建了一个 .exe 文件。
但是我设置后编译失败
$环境:GOARCH = 386
获取 32 位 exe 文件。错误消息是“main.go:4:2:构建约束排除 C:\Users\xxx\test\src 中的所有 Go 文件”。目录 \src 包含一个测试 c 函数和调用 c 的 go 函数。
请帮忙。谢谢
最后发现关键是设置好4个相关的env变量,32位的程序才能顺利编译。
$env:GOOS="windows"
$env:GOARCH="386"
$env:CGO_ENABLED=1
$env:GOGCCFLAGS="-m32 -mthreads -fmessage-length=0"
go build -x -buildmode=c-shared -o xxx.so main.go