l'éditeur php Yuzai a souligné que récemment certains utilisateurs ont signalé le problème de l'impossibilité d'exécuter des applications Golang sur des machines 32 bits. Après enquête, il a été découvert que cela était dû au fait que le langage Golang a été initialement conçu pour fonctionner sur des systèmes 64 bits et que l'espace d'adressage des systèmes 32 bits est limité et ne peut pas répondre aux besoins de Golang. Par conséquent, si vous souhaitez exécuter des applications Golang sur une machine 32 bits, vous pouvez envisager de passer à un système 64 bits ou d'utiliser d'autres langages de programmation adaptés aux systèmes 32 bits pour développer des applications.
J'ai construit Golang en version 32 bits sur une machine 64 bits. Cependant, il y a un problème, lorsque je construis comme ceci, il obtient le "kernel32.dll" dans le dossier SysWOW64, mais lorsque je l'exécute sur une machine 32 bits (Windows 7). Il n'a pas de dossier SysWOW64, il renvoie donc l'erreur :
致命错误:找不到kernel32.dll
Voici ma commande go build :
go build -ldflags "-s -w"
Voici mon environnement :
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
Quelqu'un peut-il me suggérer une solution ?
Selon la réponse de phuclv : "SysWOW64
est System32 32 bits sur Windows 64 bits. Tous les accès à %windir%System32 à partir d'applications 32 bits seront redirigés vers %windir%SysWOW64."
machine 32 bits (ou une machine virtuelle), puis copier et construire votre code là-bas. Bien sûr, vous devez rétrograder certaines bibliothèques pour correspondre au système d'exploitation, ce qui peut parfois être difficile.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!