概述
点击上方蓝色“后端开发杂谈”关注我们, 专注于后端日常开发技术分享
Go 交叉编译
说明: 以下的交叉编译主机是在 x86_64 Ubuntu 16.04 平台下进行的.
Go 交叉编译涉及的编译参数:
GOARCH
, 目标平台的 CPU 架构. 常用值amd64
,arm64
,i386
,armhf
GOOS
, 目标平台, 常用的值linux
,windows
,drawin
(macOS)GOARM
,只有GOARCH
是arm64
才有效, 表示arm
的版本, 只能是 5, 6, 7 其中之一CGO_ENABLED
,是否支持 CGO 交叉汇编, 值只能是0
,1
, 默认情况是0
,启用交叉汇编比较麻烦.CC
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使用的c
编译器.CXX
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使的c++
编译器.AR
, 当支持交叉汇编时(即CGO_ENABLED=1
), 编译目标文件使用的创建库文件命令.
不支持 CGO
不支持 CGO, 即 CGO_ENABLED=0, 在这种状况下, 进行交叉汇编是比较简单的. 只需要设置GOARCH
,GOOS
,GOARM
(只有是 arm 架构的平台) 即可.
交叉汇编 windows 系统 amd64 架构的目标文件:
GOOS=windows GOARCH=amd64 go build -o xxx *.go
交叉汇编 drawin 系统 amd64 架构的目标文件:
GOOS=drawin GOARCH=amd64 go build -o xxx *.go
交叉汇编 linux 系统 arm64 架构的目标文件:
GOOS=linux GOARCH=arm64 GOARM=7 go build -o xxx *.go
其他架构的汇编可以进行类比.
支持 CGO
支持 CGO, 即 CGO_ENABLED=1, 在这种状况下, 进行交叉汇编有点复杂. 除了设置必要的参数GOARCH
,GOOS
,GOARM
(只有是 arm 架构的平台),CGO_ENABLED
之外, 还需要设置CC
,CXX
,AR
参数.
这里主要介绍一下, 交叉汇编 arm 架构下的目标文件.
首先, arm 架构目前主要分为四种, 分别是armhf
(arm hard float, 硬件浮点),arm64
(64位的arm默认就是hf的),eab
(embedded applicaion binary interface, 嵌入式二进制接口),armel
(arm eabi little endian, 软件浮点).
下面是 arm 交叉汇编工具 (Ubuntu下):
tool | armhf | arm64 | eabi |
---|---|---|---|
gcc | gcc-arm-linux-gnueabihf | gcc-aarch64-linux-gnu | gcc-arm-linux-gnueabi |
g++ | g++-arm-linux-gnueabihf | g++-aarch64-linux-gnu | g++-arm-linux-gnueabi |
在进行交叉汇编之前需要安装各个平台的工具.
交叉汇编 linux 系统 arm64 架构的目标文件:
GOOS=linux &&
GOARCH=arm64 &&
GOARM=7 &&
CGO_ENABLED=1 &&
CC=aarch64-linux-gnu-gcc &&
CXX=aarch64-linux-gnu-g++ &&
AR=aarch64-linux-gnu-ar &&
go build -o xxx *.go
交叉汇编 linux 系统 armhf 架构的目标文件:
GOOS=linux &&
GOARCH=arm64 &&
GOARM=7 &&
CGO_ENABLED=1 &&
CC=arm-linux-gnueabihf-gcc &&
CXX=arm-linux-gnueabihf-g++ &&
AR=arm-linux-gnueabihf-ar &&
go build -o xxx *.go
arm 交叉汇编下载地址: http://releases.linaro.org/components/toolchain/binaries, 选择
aarch64-linux-gnu
,arm-linux-gnueabi
,arm-linux-gnueabihf
目录下的文件作为交叉编译工具.
至于针对其他的汇编平台, 可以类比, 但是注意选择交叉编译工具.
最后
以上就是专一红牛为你收集整理的go设置后端启动_Go 交叉编译的全部内容,希望文章能够帮你解决go设置后端启动_Go 交叉编译所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复