Heim  >  Artikel  >  Backend-Entwicklung  >  Die Golang-Anwendung kann auf einem 32-Bit-Computer nicht ausgeführt werden

Die Golang-Anwendung kann auf einem 32-Bit-Computer nicht ausgeführt werden

PHPz
PHPznach vorne
2024-02-12 19:10:081029Durchsuche

Die Golang-Anwendung kann auf einem 32-Bit-Computer nicht ausgeführt werden

php-Redakteur Yuzai wies darauf hin, dass kürzlich einige Benutzer das Problem gemeldet haben, dass sie Golang-Anwendungen nicht auf 32-Bit-Rechnern ausführen können. Nach einer Untersuchung wurde festgestellt, dass dies daran liegt, dass die Golang-Sprache ursprünglich für die Ausführung auf 64-Bit-Systemen entwickelt wurde und der Adressraum von 32-Bit-Systemen begrenzt ist und die Anforderungen von Golang nicht erfüllen kann. Wenn Sie Golang-Anwendungen auf einem 32-Bit-Computer ausführen möchten, sollten Sie daher möglicherweise ein Upgrade auf ein 64-Bit-System in Betracht ziehen oder andere Programmiersprachen verwenden, die für 32-Bit-Systeme geeignet sind, um Anwendungen zu entwickeln.

Frageninhalt

Ich habe Golang als 32-Bit-Version auf einer 64-Bit-Maschine erstellt. Es gibt jedoch ein Problem: Wenn ich so baue, wird die Datei „kernel32.dll“ im SysWOW64-Ordner angezeigt, wenn ich sie jedoch auf einem 32-Bit-Computer (Windows 7) ausführe. Da es keinen SysWOW64-Ordner gibt, wird der Fehler zurückgegeben:

致命错误:找不到kernel32.dll

Das ist mein Go-Build-Befehl:

go build -ldflags "-s -w"

Das ist meine Umgebung:

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

Kann mir jemand eine Lösung vorschlagen?

Problemumgehung

Laut phuclvs Antwort: „SysWOW64 ist 32-Bit-System32 unter 64-Bit-Windows. Der gesamte Zugriff auf %windir%System32 von 32-Bit-Anwendungen wird zu %windir%SysWOW64 umgeleitet.“

Ich denke, in Ihrem Fall müssen Sie eine

32-Bit-Maschine (oder eine virtuelle Maschine) erstellen, dann Ihren Code dort kopieren und erstellen. Natürlich müssen Sie bestimmte Bibliotheken „herunterstufen“, um sie an das Betriebssystem anzupassen, was manchmal eine Herausforderung sein kann.

Das obige ist der detaillierte Inhalt vonDie Golang-Anwendung kann auf einem 32-Bit-Computer nicht ausgeführt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen