Golang 的跨平台交叉编译浅析

Golang 的跨平台交叉编译浅析,第1张

概述什么是跨平台交叉编译 交叉编译 通俗地讲就是在一种平台上编译出其他几个平台能够运行的程序(通常指系统和CPU架构的不同) 交叉编译通常使用在分发时,编译出多个平台可用的二进制程序,比如在Linux下编译出可以在Win下可以使用的EXE程序。 本地编译 本地编译是指当前系统所配置编译器根据当前系统配置编译出在当前系统所适用的执行程序(部分其他语言本地编译时可能会由于扩展包含的问题,无法在同平台其他机 什么是跨平台交叉编译 交叉编译

通俗地讲就是在一种平台上编译出其他几个平台能够运行的程序(通常指系统和cpu架构的不同)

交叉编译通常使用在分发时,编译出多个平台可用的二进制程序,比如在linux下编译出可以在Win下可以使用的EXE程序。

本地编译

本地编译是指当前系统所配置编译器根据当前系统配置编译出在当前系统所适用的执行程序(部分其他语言本地编译时可能会由于扩展包含的问题,无法在同平台其他机器运行)。

所以如果要生成在非本机的其他平台和系统的程序,就需要用到交叉编译(交叉编译工具链)。

交叉编译工具链

> 交叉编译工具链是一个由编译器、连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc 3个部分组成。

> 有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dIEtlibc 和 newlib。

Golang 的跨平台交叉编译

Go语言是编译型语言,可以将程序编译后在将其拿到其它 *** 作系统中运行,此过程只需要在编译时增加对其它系统的支持。

交叉编译依赖下面几个环境变量 GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm) GOOS 目标平台(编译后的目标平台)的 *** 作系统(darwin、freebsd、linux、windows) 各平台的GOOS和GOARCH支持情况
GOOS GOARCH OS version
linux 386 / amd64 / arm >= linux 2.6
darwin 386 / amd64 OS X (SNow Leopard + lion)
freebsd 386 / amd64 >= FreeBSD 7
windows 386 / amd64 >= windows 2000
Golang交叉编译步骤(可跳过)

> 首先进入$GOROOT/go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件

# 如果你想在windows 32位系统下运行cd $GOROOT/srcCGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash# 如果你想在windows 64位系统下运行cd $GOROOT/srcCGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash# 如果你想在linux 32位系统下运行cd $GOROOT/srcCGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash# 如果你想在linux 64位系统下运行cd $GOROOT/srcCGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
交叉编译当前项目
# 如果你想在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# 如果你想在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 表示程序构建环境的目标 *** 作系统(linux、windows); GOARCH 表示程序构建环境的目标计算架构(32位、64位);

现在你可以在相关目标 *** 作系统上运行编译后的程序了。

链接

关于于 Go 的跨平台交叉编译浅析 交叉编译

总结

以上是内存溢出为你收集整理的Golang 的跨平台交叉编译浅析全部内容,希望文章能够帮你解决Golang 的跨平台交叉编译浅析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1273126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存