Go跨平台编译

栏目: Go · 发布时间: 5年前

内容简介:golang中跨平台交叉编译涉及两个重要的环境变量:如果想要跨平台编译go程序,只需在build的时候制定目标主机的os和arch,如下例子所示所示其中二者可以设置如下参数:

golang中跨平台交叉编译涉及两个重要的环境变量: GOOSGOARCH ,分别代表 Target Host OSTarget Host ARCH . 如果没有显式设置这些环境变量,我们通过go env可以看到 go 编译器眼中这两个环境变量的当前值

GOARCH="amd64" // 程序构建环境的目标计算架构
GOBIN="/data/server/go/bin" // 存放可执行文件的目录的绝对路径
GOEXE="" // 可执行文件的后缀
GOHOSTARCH="amd64" // 程序运行环境的目标计算架构
GOHOSTOS="linux" // 程序运行环境的目标操作系统
GOOS="linux" // 程序构建环境的目标操作系统
GOPATH="/data/code" // 工作区目录的绝对路径
GORACE="" // 用于数据竞争检测的相关选项
GOROOT="/data/server/go" // Go语言的安装目录的绝对路径
GOTOOLDIR="/data/server/go/pkg/tool/linux_amd64" // Go工具目录的绝对路径
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build410649157=/tmp/go-build"
CXX="g++"
CGO_ENABLED="1" // 指明cgo工具是否可用的标识
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
// linux 环境变量设置 /etc/profile
export GOROOT=/data/server/go
export GOPKG=$GOROOT/pkg/tool/linux_amd64 
export GOARCH=amd64
export GOOS=linux
export GOPATH=/data/code
export GOBIN=$GOROOT/bin:$GOPATH/bin
export PATH=$PATH:$GOBIN:$GOPKG:$GOPATH/bin

如果想要跨平台编译go程序,只需在build的时候制定目标主机的os和arch,如下例子所示所示

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go // win x64
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o main main.go // win x64

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go // linux x64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main main.go // linux x64

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go // mac x64
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o main main.go // mac x64

其中二者可以设置如下参数:

$GOOS         $GOARCH     
darwin         386
darwin         amd64
freebsd     386
freebsd     amd64
linux         386
linux         amd64
linux         arm     incomplete
windows     386     incomplete

如果想要编译其他平台的可执行脚本,秩序指定相应的os和arch即可。

go build命令的常用标记说明

-a        强行对所有涉及到的代码包(包含标准库中的代码包)进行重新构建,即使它们已经是最新的了。
-n        打印编译期间所用到的其它命令,但是并不真正执行它们。
-p n    指定编译过程中执行各任务的并行数量(确切地说应该是并发数量)。在默认情况下,该数量等于CPU的逻辑核数。但是在darwin/arm平台(即iPhone和iPad所用的平台)下,该数量默认是1。
-race    开启竞态条件的检测。不过此标记目前仅在linux/amd64、freebsd/amd64、darwin/amd64和windows/amd64平台下受到支持。
-v        打印出那些被编译的代码包的名字。
-work    打印出编译时生成的临时工作目录的路径,并在编译结束时保留它。在默认情况下,编译结束时会删除该目录。
-x        打印编译期间所用到的其它命令。注意它与-n标记的区别。

ps: http://wiki.jikexueyuan.com/p...


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数值方法和MATLAB实现与应用

数值方法和MATLAB实现与应用

拉克唐瓦尔德 / 机械工业出版社 / 2004-9 / 59.00元

本书是关于数值方法和MATLAB的介绍,是针对高等院校理工科专业学生编写的教材。数值方法可以用来生成其他方法无法求解的问题的近似解。本书的主要目的是为应用计算打下坚实的基础,由简单到复杂讲述了标准数值方法在实际问题中的实现和应用。本书通篇使用良好的编程习惯向读者展示了如何清楚地表达计算思想及编制文档。书中通过给读者提供大量的可直接运行的代码库以及讲解MARLAB工具箱中内置函数使用的数量方法,帮助......一起来看看 《数值方法和MATLAB实现与应用》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具