原创做者,公众号【程序员读书】,欢迎关注公众号,转载文章请注明出处哦。linux
不管你是使用Windows,Linux仍是Mac OS操做系统来开发Go应用程序,在安装好Go安装语言开发工具以后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建。android
环境变量(Environment variables)
注意:Go提供的Windows操做系统安装包(.msi后缀)安装完成后,会自动配置几个经常使用的环境变量。程序员
经常使用环境变量
Go语言中能够设置的环境变量有不少,每一个环境变量都有其做用,不过不少咱们可能都用不到,通常须要了解也是最重要的有如下几个:github
$ go env //打印Go全部默认环境变量 $ go env GOPATH //打印某个环境变量的值 复制代码
GOROOT
GOROOT
WindowsGOROOTC:/goMac OSLinuxGOROOTusr/loca/go
GOROOT/binGOROOT/bin
Linux设置GOROOT演示
export GOROOT=~/go export PATH=$PATH:$GOROOT/bin 复制代码
GOPATH
GOPATHGOROOT
GOPATH
类UnixGOPATH
opt/go
Linux设置GOPATH演示
export GOPATH=/opt/go 复制代码
还有,能够在GOPATH中设置多个工做区,如:
export GOPATH=/opt/go;$home/go 复制代码
GOPATH的子目录
go get
srcpkgbin
bin/ hello # 可执行文件 outyet # 可执行文件 src/ github.com/golang/example/ .git/ hello/ hello.go # 命令行代码 outyet/ main.go # 命令行代码 main_test.go # 测试代码 stringutil/ reverse.go # 库文件 reverse_test.go # 库文件 golang.org/x/image/ .git/ bmp/ reader.go # 库文件 writer.go # 库文件 复制代码
src包pkgbin
GOBIN
GOBIN
go installGOPATH/bin
Linux设置GOBIN演示
export GOBIN=$GOPATH/bin 复制代码
/etc/profile
交叉编译
什么是交叉编译?所谓的交叉编译,是指在一个平台上就能生成能够在另外一个平台运行的代码,例如,咱们能够32位的Windows操做系统开发环境上,生成能够在64位Linux操做系统上运行的二进制程序。
在其余编程语言中进行交叉编译可能要借助第三方工具,但在Go语言进行交叉编译很是简单,最简单只须要设置GOOS和GOARCH这两个环境变量就能够了。
GOOS与GOARCH
GOOS的默认值是咱们当前的操做系统, 若是windows,linux,注意mac os操做的上的值是darwin。 GOARCH则表示CPU架构,如386,amd64,arm等。
获取GOOS和GOARCH的值
go env
$ go env GOOS GOARCH 复制代码
GOOS和GOARCH的取值范围
GOOS和GOARCH的值成对出现,并且只能是下面列表对应的值。
$GOOS $GOARCH android arm darwin 386 darwin amd64 darwin arm darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips linux mipsle linux mips64 linux mips64le linux s390x netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm plan9 386 plan9 amd64 solaris amd64 windows 386 windows amd64 复制代码
示例
编译在64位Linux操做系统上运行的目标程序
$ GOOS=linux GOARCH=amd64 go build main.go 复制代码
编译arm架构Android操做上的目标程序
$ GOOS=android GOARCH=arm GOARM=7 go build main.go 复制代码
环境变量列表
虽然咱们通常虽然配置的环境变量就那么几个,但其实Go语言是提供了很是多的环境变量,让咱们能够自由地定制开发和编译器行为。
下面是Go提供的全部的环境变量列表,通常能够划分为下面几大类,大概了解一下就能够了,由于有些环境变量咱们能够永远都不会用到。
经过环境变量
GCCGO GOARCH GOBIN GOCACHE GOFLAGS GOOS GOPATH GOPROXY GORACE GOROOT GOTMPDIR 复制代码
和cgo一块儿使用的环境变量
CC CGO_ENABLED CGO_CFLAGS CGO_CFLAGS_ALLOW CGO_CFLAGS_DISALLOW CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW CXX PKG_CONFIG AR 复制代码
与系统架构体系相关的环境变量
GOARM GO386 GOMIPS GOMIPS64 复制代码
专用的环境变量
GCCGOTOOLDIR GOROOT_FINAL GO_EXTLINK_ENABLED GIT_ALLOW_PROTOCOL 复制代码
其余环境变量
GOEXE GOHOSTARCH GOHOSTOS GOMOD GOTOOLDIR 复制代码
小结
环境变量的设置,能够影响咱们开发和编译项目的过程与结果,因此仍是颇有必要了解一下的。
你的关注,是我写做路上最大的鼓励!
