Maison  >  Article  >  développement back-end  >  Impossible d'exécuter l'application Golang sur une machine 32 bits

Impossible d'exécuter l'application Golang sur une machine 32 bits

PHPz
PHPzavant
2024-02-12 19:10:08979parcourir

Impossible dexécuter lapplication Golang sur une machine 32 bits

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.

Contenu de la question

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 ?

Solution de contournement

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."

Je pense donc que dans votre cas, vous devez créer une

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer