go语言编译成.sh go语言编译工具( 二 )


go build -ldflags 打印编译信息go语言方便的地方之一就是容易部署 ,  编译成二进制文件,丢到服务器,就像一个内建的bash程序,不用安装依赖,不用部署环境 , 不用管理源码,直接就运行了 。这也会产生一个问题,经过年深日久的运行后 , 某天需要修改一个功能,可能最初开发的同事几经易手,那么,如何从这个二进制文件找到源码和对应的信息呢?
本文主要就是解决这个问题,利用 go build 的 -ldflags -X ,  把程序及相关的环境信息编译进项目的的help信息中 , 当程序执行-v时 , 有如下的输出:
文件准备完成后,执行下面的命令 , 把文件加入git版本管理中 , 如果不加git管理,build.sh中的脚本会执行报错:
现在执行build.sh 编译二进制文件,执行完成后 , 可见文件目录中多了一个文件 version-example
windows 怎么编译 go语言1、解压压缩包到go工作目录 , 如解压到E:\opensource\go\go,解压后go语言编译成.sh的目录结构如下go语言编译成.sh:
E:\opensource\go\go
├─api
├─bin
│├─go.exe
│├─godoc.exe
│└─gofmt.exe
├─doc
├─include
├─lib
├─misc
├─pkg
├─src
└─test
2、增加环境变量GOROOT,取值为上面的go工作目录
3、Path环境变量中添加";%GOROOT%\bin",以便能够直接调用go命令来编译go代码,至此go编译环境就配置好go语言编译成.sh了
注go语言编译成.sh:如果不想手动设置系统环境变量 , 也可下载go启动环境批处理附件,
修改goenv.bat文件中的GOROOT值为上面的go工作目录后直接双击该bat文件,go编译环境变量即设置完成 。
4、测试go编译环境,启动一个cmd窗口,直接输入go,看到下面的提示就是搭建成功了
E:\opensource\go\gogo
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
buildcompile packages and dependencies
cleanremove object files
docrun godoc on package sources
envprint Go environment information
fixrun go tool fix on packages
fmtrun gofmt on package sources
getdownload and install packages and dependencies
installcompile and install packages and dependencies
listlist packages
runcompile and run Go program
testtest packages
toolrun specified go tool
versionprint Go version
vetrun go tool vet on packages
Use "go help [command]" for more information about a command.
Additional help topics:
gopathGOPATH environment variable
packagesdescription of package lists
remoteremote import path syntax
testflagdescription of testing flags
testfuncdescription of testing functions
Use "go help [topic]" for more information about that topic.
5、编译helloworld测试程序,go语言包中test目录带有helloworld.go测试程序,源码见"附一 helloworld.go",
直接调用"go build helloworld.go"就生成了"helloworld.exe"可执行程序,运行一下这个程序看到了go语言编译成.sh我们期望的hello,wolrd 。
E:\opensource\go\go\testgo build helloworld.go
E:\opensource\go\go\testhelloworld.exe
hello, world
E:\opensource\go\go\test
附一 helloworld.go
// cmpout
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Test that we can do page 1 of the C book.
package main
func main() {
print("hello, world\n")
}
linux环境下golang怎么编译exeLinux 是不需要安装的 , 直接用 chmod -x 文件名 将它的属性修改为可运行,然后就可以通过命令行执行它了,后缀名你改为 .sh ,这是 shell 默认支持的文件类型

推荐阅读