[英]How to cross-compile from linux/amd64 to darwin/arm64 with cgo?
[英]cgo cross compiling from amd64(linux) to arm64(linux)
我試圖使用基於arm64的“ amd64”構建“ arm64”架構的go代碼。 使用共享庫構建go代碼時,出現以下錯誤。 有人可以幫我嗎?
Go版本:go1.10.3 linux / amd64
gcc版本:gcc版本7.3.0(Ubuntu 7.3.0-21ubuntu1〜16.04)
去env:
GOARCH="arm64"
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
CGO_ENABLED="1"
錯誤:建立hello.go
# runtime/cgo
gcc_arm64.S: Assembler messages:
gcc_arm64.S:27: Error: no such instruction: `stp x19,x20,[sp,'
gcc_arm64.S:28: Error: no such instruction: `stp x21,x22,[sp,'
gcc_arm64.S:29: Error: no such instruction: `stp x23,x24,[sp,'
gcc_arm64.S:30: Error: no such instruction: `stp x25,x26,[sp,'
gcc_arm64.S:31: Error: no such instruction: `stp x27,x28,[sp,'
gcc_arm64.S:32: Error: no such instruction: `stp x29,x30,[sp,'
gcc_arm64.S:33: Error: too many memory references for `mov'
gcc_arm64.S:35: Error: too many memory references for `mov'
gcc_arm64.S:36: Error: too many memory references for `mov'
gcc_arm64.S:37: Error: too many memory references for `mov'
gcc_arm64.S:39: Error: no such instruction: `blr x20'
gcc_arm64.S:40: Error: no such instruction: `blr x19'
gcc_arm64.S:42: Error: no such instruction: `ldp x29,x30,[sp],'
gcc_arm64.S:43: Error: no such instruction: `ldp x27,x28,[sp],'
gcc_arm64.S:44: Error: no such instruction: `ldp x25,x26,[sp],'
gcc_arm64.S:45: Error: no such instruction: `ldp x23,x24,[sp],'
gcc_arm64.S:46: Error: no such instruction: `ldp x21,x22,[sp],'
gcc_arm64.S:47: Error: no such instruction: `ldp x19,x20,[sp],'
驗證碼:
package main
/*
#cgo CFLAGS: -I./cgolang/include
#cgo LDFLAGS: -L./cgolang/lib -laxxxxxx
#include "axxxxxx.h"
*/
import "C"
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
我像這樣#cgo LDFLAGS鏈接了數學庫:-L./cgolang/lib -lpthread -lm
那對我有用。 如果您的共享庫是由第三方提供的,請讓他們幫助您
env CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=/path/to/your/arm64/gcc go build hello.go
您可能會看到相同的問題: https : //github.com/golang/go/issues/8161
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.