教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 ubuntu下用gc的方式编译arm版本的golang并测试

ubuntu下用gc的方式编译arm版本的golang并测试

发布时间:2023-02-15   编辑:jiaochengji.com
教程集为您提供ubuntu下用gc的方式编译arm版本的golang并测试等资源,欢迎您收藏本站,我们将为您提供最新的ubuntu下用gc的方式编译arm版本的golang并测试资源

golang官方文档的介绍, go编译器可以支持12种指令集. 本文编译是arm版本的golang. 

编译环境: 

Linux ubuntu 5.0.0-32-generic #34~18.04.2-Ubuntu SMP Thu Oct 10 10:36:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

目标环境:

Linux imx6ulevk 4.1.15imx6ul-GW-4.1.15-1.1.0 #337 SMP PREEMPT Tue Sep 24 19:57:05 CST 2019 armv7l armv7l armv7l GNU/Linux

 

<一>: 前置

官方文档上这么介绍

Go 1.4 was the last distribution in which the toolchain was written in C.

Go 1.4是用C编写工具链的最后一个版本.

所以想编译go1.4以后的golang, 先编译此版本的工具链. 再用此工具链编译其后的版本.

所以要准备两个版本的源码, go1.4和你要编译的版本.

1, go1.4版source地址如下:

https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz

2, 编译版本的source, 我编译的是go1.14版, 也可选选择其他版本. go1.14地址如下:

https://dl.google.com/go/go1.14.src.tar.gz

 

<二>: 编译

1, 编译go1.4

    a) 解压go1.4在/usr/local下, 因为编译环境是x86_64, 所以先export下环境

export GOOS=linux
export GOARCH=amd64

    b) 编译

cd /usr/local/go/src

./make.bash

2, 编译go1.14

    a) 先配置下/etc/profile, 增加一项并export

GOROOT_BOOTSTRAP=/usr/local/go
export PATH=$PATH:$GOROOT_BOOTSTRAP:$GOROOT_BOOTSTRAP/bin

     保存后执行source /etc/profile使环境生效(可以执行go命令)

    b) 解压go1.14在$HOME下, 因为目标环境是arm, 所以先export下环境

export GOOS=linux
export GOARCH=arm
export GOARM=7
export CGO_ENABLED=1
export CC_FOR_TARGET=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc
export CXX_FOR_TARGET=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g

    我的目标环境是armv7, 配置GOARCH=arm, 配置GOARM=7

    使用cgo, 配置CGO_ENABLED=1

    其中CC_FOR_TARGET和CXX_FOR_TARGET两项是你的arm版的gcc和g

    c) 编译

cd $HOME/go/src

./bootstrap.bash

编译好的arm版本的golang在$HOME/go-linux-amd64-bootstrap下

 

<三> 测试

把编译好的arm-golang放在自己的板子里, 并配置环境, 我的环境配置如下:

export GO111MODULE=on
export GOPROXY=https://goproxy.io
GOROOT=/usr/local/go
GOPATH=/home/root

以websocket为例, 使用的开源库是github.com/gorilla/websocket, 下载编译

go get "github.com/gorilla/websocket"

测试结果如下:

 

结束.

到此这篇关于“ubuntu下用gc的方式编译arm版本的golang并测试”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go语言的特性
Betaflight二次开发-环境搭建
golang 释放内存机制的探索
go arm、android版本
Go 交叉编译
Golang垃圾回收机制
修复Ubuntu引导菜单的方法
安装redis和phpredis模块一例
龙芯平台构建Go语言环境指南
golang gc实现分析(go1.14.4)

[关闭]
~ ~