教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 以及 go SDK 交叉编译

golang 以及 go SDK 交叉编译

发布时间:2022-12-09   编辑:jiaochengji.com
教程集为您提供golang 以及 go SDK 交叉编译等资源,欢迎您收藏本站,我们将为您提供最新的golang 以及 go SDK 交叉编译资源

[TOC]

说明

注意:本文交叉编译需要 1.5 以上

简单演示 Golang macOS 下编译 windows 64位程序

➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o test_win_x64.exe test.go

简单演示 Golang macOS 下编译 Linux 64位程序

➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o test_linux_x64 test.go

交叉编译执行程序

# 如果你想在Windows 32位系统下运行
➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=386 go build test.go

# 如果你想在Windows 64位系统下运行
➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go

# 如果你想在OS X 32位系统下运行
➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=386 go build test.go

# 如果你想在OS X 64位系统下运行
➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go

# 如果你想在Linux 32位系统下运行
➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=386 go build test.go

# 如果你想在Linux 64位系统下运行
➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
  • CGO_ENABLED = 0 表示设置CGO工具不可用
  • GOOS 程序构建环境的目标操作系统
  • GOARCH 表示程序构建环境的目标计算架构

编译支持设置范例

GOOS=windows go build -v
GOOS=linux go build -v
GOOS=darwin go build -v

golang 交叉编译支持

查询当前的交叉编译支持,执行命令

➜  go tool dist list

golang SDK编译

预备交叉编译环境

因为go在1.5以后使用了golang 1.4 来编译自己(自举),所以需要先下载golang1.4

linux 准备

https://dl.google.com/go/go1.4.3.linux-amd64.tar.gz

设置环境变量 GOROOT_BOOTSTRAP

解压到

tar zxvf go1.4.3.linux-amd64.tar.gz
cp go/ $home/go-bootstrap/
GOROOT_BOOTSTRAP=$home/go-bootstrap/
export GOROOT_BOOTSTRAP

Mac 准备

https://dl.google.com/go/go1.4.3.darwin-amd64.pkg

设置环境变量 GOROOT_BOOTSTRAP

解压到

tar zxvf go1.4.3.darwin-amd64.tar.gz
cp go/ $home/go-bootstrap/
GOROOT_BOOTSTRAP=$home/go-bootstrap/
export GOROOT_BOOTSTRAP

Windows 准备

下载
http://tdm-gcc.tdragon.net/download
需要下载 32 和 64 安装 TDM-GCC 32位 64位 并设置 path

下载
https://dl.google.com/go/go1.4.3.windows-amd64.zip
解压后

设置环境变量 GOROOT_BOOTSTRAP 到解压目录(禁止任何中文,编码问题)

进入需要配置交叉编译的目录,执行

cd %GOROOT%/src
set CGO_ENABLED=0 | set GOOS=linux | set GOARCH=amd64 | make.bat

golang SDK 跨平台交叉编译

  • 需要 进入 $GOROOT/go/src 源码所在目录执行
  • 需要 golang 1.4.x 的环境
# 如果你想在Windows 32位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash

# 如果你想在Windows 64位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.

# 如果你想在OS X 32位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=386 ./make.bash

# 如果你想在OS X 64位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 ./make.bash

# 如果你想在Linux 32位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash

# 如果你想在Linux 64位系统下运行
➜  ~cd $GOROOT/src
➜  ~CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash

执行结束后,才可以使用交叉编译

并不是重新编译Go,因为安装Go的时候,只是编译了本地系统需要的东西,而需要跨平台交叉编译,需要在Go中增加对其他平台的支持,所以会有 ./make.bash 这么一个过程

Error Set $GOROOT_BOOTSTRAP

##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find /Users/xxx/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
到此这篇关于“golang 以及 go SDK 交叉编译”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang 以及 go SDK 交叉编译
golang交叉编译sqlite的问题解决-cgo交叉编译
龙芯平台构建Go语言环境指南
Go 交叉编译
Go语言的特性
GOLANG环境安装
Golang学习笔记(五):Go语言与C语言的区别
golang 交叉编译
Go语言发展历史、核心、特性及学习路线
Go语言基础 001

[关闭]
~ ~