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.
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?
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.“
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!