簡體   English   中英

如何使用 cgo 從 linux/amd64 交叉編譯到 darwin/arm64?

[英]How to cross-compile from linux/amd64 to darwin/arm64 with cgo?

我正在嘗試在linux/amd64上交叉編譯darwin/arm64 ,當我使用CGO_ENABLED=1構建代碼時出現以下錯誤,我理解該錯誤,但我不知道如何解決。

我的代碼必須啟用CGO_ENABLED功能才能編譯。

錯誤信息:

GOOS=darwin GOARCH=arm64 CGO_ENABLED=1 CC=gcc go build -o dist/darwin-arm64 cmd/main.go
# runtime/cgo
gcc: error: arm64: No such file or directory
gcc: error: unrecognized command line option '-arch'
make: *** [makefile:6: darwin] Error 2

主機系統:

Linux 83433d127edb 5.13.0-28-generic #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

去環境:

GO111MODULE=""                                                                                                                       
GOARCH="amd64"                                                                                                                       
GOBIN=""                                                                                                                             
GOCACHE="/root/.cache/go-build"                                                                                                      
GOENV="/root/.config/go/env"                                                                                                         
GOEXE=""                                                                                                                             
GOEXPERIMENT=""                                                                                                                      
GOFLAGS=""                                                                                                                           
GOHOSTARCH="amd64"                                                                                                                   
GOHOSTOS="linux"                                                                                                                     
GOINSECURE=""                                                                                                                        
GOMODCACHE="/root/go/pkg/mod"                                                                                                        
GONOPROXY=""                                                                                                                         
GONOSUMDB=""                                                                                                                         
GOOS="linux"                                                                                                                         
GOPATH="/root/go"                                                                                                                    
GOPRIVATE=""                                                                                                                         
GOPROXY="https://proxy.golang.org,direct"                                                                                            
GOROOT="/usr/lib/go-1.18"                                                                                                            
GOSUMDB="sum.golang.org"                                                                                                             
GOTMPDIR=""                                                                                                                          
GOTOOLDIR="/usr/lib/go-1.18/pkg/tool/linux_amd64"                                                                                    
GOVCS=""                                                                                                                             
GOVERSION="go1.18"                                                                                                                   
GCCGO="gccgo"                                                                                                                        
GOAMD64="v1"                                                                                                                         
AR="ar"                                                                                                                              
CC="gcc"                                                                                                                             
CXX="g++"                                                                                                                            
CGO_ENABLED="1"                                                                                                                      
GOMOD="/home/worker/go.mod"                                                                                                          
GOWORK=""                                                                                                                            
CGO_CFLAGS="-g -O2"                                                                                                                  
CGO_CPPFLAGS=""                                                                                                                      
CGO_CXXFLAGS="-g -O2"                                                                                                                
CGO_FFLAGS="-g -O2"                                                                                                                  
CGO_LDFLAGS="-g -O2"                                                                                                                 
PKG_CONFIG="pkg-config"                                                                                                              
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build1206945591=/tmp/go-build -gno-record-gcc-switches"

很有可能,您需要安裝 gcc 工具鏈以交叉編譯到arm64

我知道 Debian/Ubuntu 有用於 Windows 以及其他 Linux 架構的交叉編譯工具鏈(例如:包gcc-aarch64-linux-gnulibc6-dev-arm64-crossgcc-mingw-w64-x86-64 )。

我不確定是否有可用的darwin工具鏈。

暫無
暫無

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

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