前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go 编译执行文件分发

go 编译执行文件分发

作者头像
大话swift
发布2019-07-19 16:43:51
1.5K0
发布2019-07-19 16:43:51
举报
文章被收录于专栏:大话swift

今天咱们不说go的语法知识,为什么不说语法了呢?因为咱们做了这么就的go东西全是在编辑器中运行的,大家是不是很想知道怎么在编辑器之外去执行go程序呢?(win的.exe文件 linux ./xx)…

好了进入今天的正题golang build命令解析篇章吧

go build 是我们非常常用的命令,通过编译之后就能生成不依赖与我们当前环境的可执行文件。我们来看一下这个命令的简单使用

  • bogon:bbd sk$ pwd/Users/sk/go/bbdbogon:bbd sk$ cd div/bogon:div sk$ go buildbogon:div sk$ go build .bogon:div sk$ go build index.go bogon:div sk$

简单的解析一下上文:这个是基于lz的实例我们有多个包每个里面都是main。我们cd进入div这个包中分别执行啦go build go build . go build index.go我们来看看结果

其中 div 执行文件是由前两个命令生成的 index是最后一个命令生成的。也就是是说build会自动找寻main包的main所在的文件然后以包名命名,当指定了main所在文件则以执行文件命名

目前我们的执行文件是按照我们当前环境的编译出来的,那么怎么实现go编译出执行文件分发给Linux windows呢?在这之前我们看看本地的编译环境

代码语言:javascript
复制
bogon:GitHub sk$ go envGOARCH="amd64"GOBIN="/Users/sk/Documents/GoProjects/gopath/bin"GOCACHE="/Users/sk/Library/Caches/go-build"GOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOOS="darwin"GOPATH="/Users/sk/Documents/GoProjects/gopath"GOPROXY=""GORACE=""GOROOT="/usr/local/go"GOTMPDIR=""GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"GCCGO="gccgo"CC="clang"CXX="clang++"CGO_ENABLED="1"GOMOD=""CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/j8/gjsvql2x5gb4gyl227l0mhnm0000gn/T/go-build695467410=/tmp/go-build -gno-record-gcc-switches -fno-common"

我们看到上文中有一大把的参数其中跟我们平台有关的为

GOARCH="amd64" GOOS="darwin"其中GOARCH指定的是指令集,GOOS指定的是平台:

GOOS

代码语言:javascript
复制
darwin
freebsd
linux
windows
android
dragonfly
netbsd
openbsd
plan9
solaris

GOARCH

代码语言:javascript
复制
arm
arm64
386
amd64
ppc64
ppc64le
mips64
mips64le
s390x

了解了基本的编译指令我们来进行一下实践

macOS

代码语言:javascript
复制
GOOS=darwin GOARCH=amd64 go build  ./div/index.go

windows

代码语言:javascript
复制
GOOS=windows GOARCH=386 go build  ./div/index.go

Linux

代码语言:javascript
复制
GOOS=linux GOARCH=amd64 go build  ./div/index.go

macOS本身就是Linux我们就分别编译之后执行啦

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档