登录
首页 >  Golang >  Go问答

Golang应用程序无法运行在32位机器上

来源:stackoverflow

时间:2024-02-07 20:42:08 482浏览 收藏

本篇文章向大家介绍《Golang应用程序无法运行在32位机器上》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我在 64 位机器上将 Golang 构建为 32 位版本。但是,它有一个问题,当我这样构建时,它将获取 SysWOW64 文件夹中的“kernel32.dll”,但是当我在 32 位计算机(Windows 7)中运行时。它没有 SysWOW64 文件夹,因此返回错误:

致命错误:找不到kernel32.dll

这是我的 go 构建命令:

go build -ldflags "-s -w"

这是我的环境:

set GO111MODULE=
set GOARCH=386
set GOBIN=
set GOCACHE=C:\Users\name\AppData\Local\go-build
set GOENV=C:\Users\name\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\name\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\name\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.1
set GCCGO=gccgo
set GO386=sse2
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=D:\Center\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -MT
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m32 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\name\AppData\Local\Temp\go-build581533674=/tmp/go-build -gno-record-gcc-switches

谁能给我建议一个解决方案吗?


正确答案


根据 phuclv 的回答:“SysWOW64 是 64 位 Windows 上的 32 位 System32。32 位应用程序对 %windir%\System32 的所有访问都将重定向到 %windir%\SysWOW64。”

所以我认为在你的情况下,你需要构建一个32位机器(或虚拟机),然后复制构建你的代码在那里。当然,您必须降级某些库以匹配操作系统,有时这可能具有挑战性。

今天关于《Golang应用程序无法运行在32位机器上》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>