Home > Backend Development > Golang > Unable to run Golang application on 32-bit machine

Unable to run Golang application on 32-bit machine

PHPz
Release: 2024-02-12 19:10:08
forward
1070 people have browsed it

Unable to run Golang application on 32-bit machine

php editor Yuzai pointed out that recently some users reported the problem of being unable to run Golang applications on 32-bit machines. After investigation, it was found that this is because the Golang language was originally designed to run on 64-bit systems, and the address space of 32-bit systems is limited and cannot meet the needs of Golang. Therefore, if you want to run Golang applications on a 32-bit machine, you may want to consider upgrading to a 64-bit system, or use other programming languages ​​​​that are suitable for 32-bit systems to develop applications.

Question content

I built Golang as a 32-bit version on a 64-bit machine. However, it has a problem, when I build like this, it gets the "kernel32.dll" in the SysWOW64 folder, but when I run it in a 32-bit machine (Windows 7). It doesn't have a SysWOW64 folder, so it returns the error:

Fatal error: kernel32.dll not found

This is my go build command:

go build -ldflags "-s -w"
Copy after login

This is my environment:

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
Copy after login

Can anyone suggest me a solution?

Workaround

According to phuclv's answer: "SysWOW64 is a 32-bit System32 on 64-bit Windows. 32-bit applications have to use %windir%\System32 All access to will be redirected to %windir%\SysWOW64."

So I think in your case you need to build a 32 bit machine (or virtual machine) and then copy and build your code over there. Of course, you'll have to downgrade some libraries to match the operating system, which can be challenging sometimes.

The above is the detailed content of Unable to run Golang application on 32-bit machine. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template