在Windows上构建Golang环境的完整指南
在Windows上构建Golang环境的完整指南 你好
我需要构建新版本的Go:
[signal arrived during external code execution · Issue #31 · timob/jnigi]
我已经修改了 signal_windows.go,安装了 MinGW,并尝试运行 all.bat:
C:\Program Files\GoFork\src>
C:\Program Files\GoFork\src>all
Building Go cmd/dist using C:\Users\brian.morrow\Go1.4. (go1.22.3 windows/amd64)
go: no such tool “compile”
go: no such tool “compile”
go: no such tool “compile”
go: no such tool “compile”
go: no such tool “compile”
go: no such tool “compile”
go: no such tool “compile”
但如你所见,它没有正常工作。
这是我的 Path 环境变量:
Path=C:\MinGW\msys\1.0\bin;C:\Program Files\Go\bin;.;C:\MinGW\bin
这是 go env 的输出:
C:\Program Files\GoFork\src>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\brian.morrow\AppData\Local\go-build
set GOENV=C:\Users\brian.morrow\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\brian.morrow\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\brian.morrow\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\PROGRA~1\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\PROGRA~1\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.22.3
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Program Files\GoFork\src\go.mod
set GOWORK=
set CGO_CFLAGS=-IC:\PROGRA~1\Java\jdk-11.0.2\include -IC:\PROGRA~1\Java\jdk-11.0.2\include/win32
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -Wl,–no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\BRIAN~1.MOR\AppData\Local\Temp\go-build3133655552=/tmp/go-build -gno-record-gcc-switches
非常感谢任何建议。
更多关于在Windows上构建Golang环境的完整指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于在Windows上构建Golang环境的完整指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
从你的错误信息和环境配置来看,主要问题是 GOROOT 指向了旧的 Go 1.22.3 安装目录,而你在 C:\Program Files\GoFork\src 中尝试构建新版本。构建系统找不到正确的编译工具链。
首先,设置正确的环境变量。在构建前执行:
set GOROOT=C:\Program Files\GoFork
set PATH=%GOROOT%\bin;%PATH%
然后清理并重新构建。进入源码目录:
cd "C:\Program Files\GoFork\src"
del /f /q *.bat
go clean -cache
使用 bootstrap 方式构建。先构建 dist 工具:
set GOROOT_BOOTSTRAP=C:\Users\brian.morrow\Go1.4
cd src
make.bat
如果 make.bat 失败,手动编译:
set CGO_ENABLED=0
go build -o cmd/dist/dist.exe cmd/dist
然后运行 all.bat:
all.bat
检查 MinGW 配置是否正确。创建测试文件 test.c:
#include <stdio.h>
int main() {
printf("MinGW working\n");
return 0;
}
编译测试:
gcc test.c -o test.exe
test.exe
如果 MinGW 工作正常,确保 CGO 配置正确。修改环境变量:
set CC=gcc
set CXX=g++
set PATH=C:\MinGW\bin;%PATH%
最后重新构建:
cd "C:\Program Files\GoFork\src"
go clean -modcache
all.bat
构建成功后验证:
set GOROOT=C:\Program Files\GoFork
%GOROOT%\bin\go version
这会显示新构建的 Go 版本。

