簡體   English   中英

golang 無法執行二進制文件:執行格式錯誤

[英]golang cannot execute binary file: Exec format error

我的 go 環境

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

我在我的 Mac 上編譯並成功執行了二進制文件,然后將其復制到 ubuntu 機器,其 go 環境如上所示。 當我調用 myprog 二進制文件時,我得到

bash: /usr/local/go/bin/myprog: cannot execute binary file: Exec format error

從1.5開始,交叉編譯器變得非常簡單。 就像是

env GOOS=linux GOARCH=amd64 go build -v github.com/constabulary/gb/cmd/gb

請參閱http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5

我有同樣的問題。 我安裝了64位版本的go而不是32位版本。 安裝32位版本后,它工作正常。

在 Windows 上,確保您(或您的 IDE)沒有運行 PowerShell - powershell 不會采用set GOOS並且不會拋出錯誤,並且仍會編譯二進制文件,當您將二進制文件部署到服務器時,您會發現此錯誤。

當我下載 golang 的 x86 版本時,這發生在我身上,但我配置的 VM 是 ARM cpu。

您可以在此處下載 ARM: https://go.dev/dl/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM