Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用CGO AMD与Xgo交叉编译Go项目=>;手臂_Go_Arm_Cross Compiling - Fatal编程技术网

Can';t使用CGO AMD与Xgo交叉编译Go项目=>;手臂

Can';t使用CGO AMD与Xgo交叉编译Go项目=>;手臂,go,arm,cross-compiling,Go,Arm,Cross Compiling,我正在做一个go项目,它实现了C代码 我可以在linux/amd64上构建这个项目,现在如果我们使用“IMPORT C”,就不会交叉编译。 因此,我与XGO合作,这可能有助于我交叉编译ARM 我在没有C代码的情况下,通过交叉编译我的go项目版本来检查XGO,它的工作方式与go的交叉编译类似 我的环境: go version go1.13.3 linux/amd64 Go env: GO111MODULE="on" GOARCH="amd64" GOBIN="/opt/go/bin" GOCAC

我正在做一个go项目,它实现了C代码

我可以在linux/amd64上构建这个项目,现在如果我们使用“IMPORT C”,就不会交叉编译。 因此,我与XGO合作,这可能有助于我交叉编译ARM

我在没有C代码的情况下,通过交叉编译我的go项目版本来检查XGO,它的工作方式与go的交叉编译类似

我的环境:

go version go1.13.3 linux/amd64
Go env:

GO111MODULE="on"
GOARCH="amd64"
GOBIN="/opt/go/bin"
GOCACHE="/home/jj/.cache/go-build"
GOENV="/home/jj/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/opt/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/opt/go/src/github.com/brocaar/lora-app-server/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
我的项目正在进行中=>

/opt/go/src/github.com/brocaar
我的包含c代码的包已打开=>

/opt/go/src/github.com/lorawan
我的项目的go.mode

  module github.com/brocaar/lora-app-server

  go 1.12

  replace github.com/brocaar/lorawan => /opt/go/src/github.com/brocaar/lorawan

  require (
           cloud.google.com/go v0.44.3
           github.com/Azure/azure-service-bus-go v0.9.1
           github.com/NickBall/go-aes-key-wrap v0.0.0-20170929221519-1c3aa3e4dfc5
           github.com/aws/aws-sdk-go v1.19.19
           github.com/brocaar/loraserver v0.0.0-20190917115647-c4da45f52f2b
           github.com/brocaar/lorawan v0.0.0-20190814113539-8eb2a8d6da09
           github.com/dgrijalva/jwt-go v3.2.0+incompatible
           github.com/eclipse/paho.mqtt.golang v1.2.0
           github.com/elazarl/go-bindata-assetfs v1.0.0
           github.com/gofrs/uuid v3.2.0+incompatible
           github.com/golang/protobuf v1.3.2
           github.com/gomodule/redigo v2.0.0+incompatible
           github.com/goreleaser/goreleaser v0.106.0

         )
src/github.com/brocaar/lora-app-server/cmd/lora-app-server
我的交叉编译命令是

xgo -go 1.13.3  --targets=linux/arm-7 /opt/go/src/github.com/brocaar/lora-app-server/cmd/lora-app-server
结果错误为

  module github.com/brocaar/lora-app-server

  go 1.12

  replace github.com/brocaar/lorawan => /opt/go/src/github.com/brocaar/lorawan

  require (
           cloud.google.com/go v0.44.3
           github.com/Azure/azure-service-bus-go v0.9.1
           github.com/NickBall/go-aes-key-wrap v0.0.0-20170929221519-1c3aa3e4dfc5
           github.com/aws/aws-sdk-go v1.19.19
           github.com/brocaar/loraserver v0.0.0-20190917115647-c4da45f52f2b
           github.com/brocaar/lorawan v0.0.0-20190814113539-8eb2a8d6da09
           github.com/dgrijalva/jwt-go v3.2.0+incompatible
           github.com/eclipse/paho.mqtt.golang v1.2.0
           github.com/elazarl/go-bindata-assetfs v1.0.0
           github.com/gofrs/uuid v3.2.0+incompatible
           github.com/golang/protobuf v1.3.2
           github.com/gomodule/redigo v2.0.0+incompatible
           github.com/goreleaser/goreleaser v0.106.0

         )
src/github.com/brocaar/lora-app-server/cmd/lora-app-server
正在检查docker安装。。。 客户: 版本:18.09.7 API版本:1.39 Go版本:go1.10.4 Git提交:2d0083d 建成日期:2019年8月16日星期五14:19:38 OS/Arch:linux/amd64 实验性:错误

Server:
  Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       2d0083d
  Built:            Thu Aug 15 15:12:41 2019
  OS/Arch:          linux/amd64
  Experimental:     false

  Checking for required docker image karalabe/xgo-1.13.3... found.
  Cross compiling github.com/brocaar/lora-app-server/cmd/lora-app-server...
Building locally github.com/brocaar/lora-app-server/cmd/lora-app-server...
Bootstrapping linux/arm-7...
go: github.com/brocaar/lorawan@v0.0.0-20190814113539-8eb2a8d6da09: parsing 
/opt/go/src/github.com/brocaar/lorawan/go.mod: open /opt/go/src/github.com/brocaar/lorawan/go.mod: no 
such file or directory
2019/12/03 16:02:37 Failed to cross compile package: exit status 1.

我现在真的不明白他为什么说“没有这样的文件或目录”,因为lorawan文件夹中有go.mod!有人能帮我吗?谢谢

我终于找到了解决办法

首先我在ubuntu arm linux gnueabi gcc上安装,然后我只是在交叉编译命令CC中添加如下内容:

env GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CC=arm-linux-gnueabi-gcc  go build 

很好

检查是否有正确的go.mod文件directory@cslrnr我检查了一下,在/lorawan中有一个go.mod,编译器会找到这个存储库,所以。。。