3130

go交叉编译arm程序

乐果   发表于   2019 年 02 月 20 日 标签:golang

编译Go编译器(Host) 因为从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码编译Go需要先编译一个1.4版本的Go版本。

下载完成之后将得到一个go1.4压缩包,接下来进行解压编译:

tar -zxvf go1.4-bootstrap-20171003.tar.gz -C /usr/local/
cd /usr/local/go/src
GOOS=linux GOARCH=amd64 ./make.bash

经过短时间的编译之后将会在go/bin目录下生成go命令二进制文件

设置环境变量 在/etc/bash.bashrc文件中添加如下内容(重启命令行后生效)):

export GOROOT_BOOTSTRAP=/usr/local/go
export CC_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc    
export CXX_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

编译Go(ARM) 完成Go1.4的编译之后,可以利用Go1.4来编译新版本的Go。

tar -zxvf go-go1.10.3.tar.gz
cd go-go1.10.3/src
# 开启CGO编译
CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 ./make.bash 
# 关闭CGO编译
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 ./make.bash

提示:当选择开启CGO编译时必须配置CC_FOR_TARGET和CXX_FOR_TARGET两个环境变量

经过编译之后go-go1.10.3目录下会生成arm和amd64两个平台的Go命令和依赖包,所以这个版本编译的Go命令可以进行两个平台的Go应用程序开发。

使用新编译的Go1.10版本替换旧的Go1.4

cd go-go1.10.3/src
cd ../../
mv go-go1.10.3 go
rm /usr/local/go -rf
cp -r go /usr/local/go

设置环境变量 在/etc/bash.bashrc文件中添加如下内容(重启命令行后生效)):

export GOROOT_BOOTSTRAP=/usr/local/go
# 为了可以编译CGO的Go应用程序(ARM版本)必须要保留下面的两个环境变量
export CC_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc    
export CXX_FOR_TARGET=/opt/zhaozhongxiang/hwzt_yc_3.10.53/build-x11/tmp/sysroots/x86_64-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

乐果   发表于   2019 年 02 月 20 日 标签:golang

0

文章评论