我正在做一个go项目,它植入了C代码!
我可以在linux/ and 64上构建这个项目,如果我们使用"IMPORT C“,那么我们现在就不用交叉编译了。因此,我与XGO一起工作,这可能有助于我交叉编译ARM。
我检查XGO通过交叉编译版本的go项目,没有C代码,它的工作就像交叉的围棋。
我的环境:
go version go1.13.3 linux/amd64Go 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/lorawango.mode of my project:
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
)我的交叉命令是:
xgo -go 1.13.3 --targets=linux/arm-7 /opt/go/src/github.com/brocaar/lora-app-server/cmd/lora-app-server结果错误是:
src/github.com/brocaar/lora-app-server/cmd/lora-app-server检查码头安装..。客户端:版本: 18.09.7 API版本: 1.39 Git版本: go1.10.4 Git提交: 2d0083d构建: Fri Aug 16 14:19:38 2019 OS/Arch: linux/amd64 64实验: false
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.我现在真的不知道为什么他说“没有这样的文件或目录”,因为文件夹中有go.mod!有人能帮我吗?谢谢
发布于 2019-12-04 08:41:17
我终于找到解决办法了!
首先,我安装在ubuntu arm-linux-gnueabi-gcc上,然后我将其添加到交叉编译编译命令CC中,如:
env GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CC=arm-linux-gnueabi-gcc go build 工作很好!
https://stackoverflow.com/questions/59160109
复制相似问题