Maison > développement back-end > Golang > le corps du texte

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

PHPz
Libérer: 2024-02-12 19:10:08
avant
1034 Les gens l'ont consulté

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"
Copier après la connexion

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
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal