无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建。
但对于一些初学者来说,可能不太明白Go语言中常用的环境变量(Environment variables)的作用以及如何设置环境变量,今天我们来讲讲。
注意:Go提供的Windows操作系统安装包(.msi后缀)安装完成后,会自动配置几个常用的环境变量。
常用环境变量
Go语言中可以设置的环境变量有很多,每个环境变量都有其作用,不过很多我们可能都用不到,一般需要了解也是最重要的有以下几个:
$ go env //打印Go所有默认环境变量 $ go env GOPATH //打印某个环境变量的值
GOROOT
环境变量GOROOT表示Go语言的安装目录。
在Windows中,GOROOT的默认值是C:/go,而在Mac OS或Linux中GOROOT的默认值是usr/loca/go,如果将Go安装在其他目录中,而需要将GOROOT的值修改为对应的目录。
另外,GOROOT/bin则包含Go为我们提供的工具链,因此,应该将GOROOT/bin配置到环境变量PATH中,方便我们在全局中使用Go工具链。
Linux设置GOROOT演示
export GOROOT=~/go export PATH=$PATH:$GOROOT/bin
GOPATH
注意,GOPATH的值不能与GOROOT相同。
环境变量GOPATH用于指定我们的开发工作区(workspace),是存放源代码、测试文件、库静态文件、可执行文件的工作。
在类Unix(Mac OS或Linux)操作系统中GOPATH的默认值是$home/go。而在Windows中GOPATH的默认值则为%USERPROFILE%\go(比如在Admin用户,其值为C:\Users\Admin\go)。
当然,我们可以通过修改GOPATH来更换工作区,比如将工作设置opt/go方式如下:
Linux设置GOPATH演示
export GOPATH=/opt/go
还有,可以在GOPATH中设置多个工作区,如:
export GOPATH=/opt/go;$home/go
GOPATH的子目录
上面的代码表示我们指定两个工作区,不过当我们使用go get命令去获取远程库的时候,一般会安装到第一个工作区当中。
按照Go开发规范,GOPATH目录下的每个工作一般分为三个子目录:src,pkg,bin,所以我们看到的每个工作区是这样子的:
bin/
"htmlcode">
export GOBIN=$GOPATH/bin上面的代码中,我们都是使用export命令设置环境变量的,这样设置只能在当前shell中有效,如果想一直有效,如在Linux中,则应该将环境变量添加到/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命令获取当前GOOS和GOARCH的值。
$ go env GOOS GOARCHGOOS和GOARCH的取值范围
GOOS和GOARCH的值成对出现,而且只能是下面列表对应的值。
$GOOS "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "white-space:pre"> "htmlcode">
$ 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
小结
环境变量的设置,可以影响我们开发和编译项目的过程与结果,所以还是很有必要了解一下的。
更多关于Golang常用环境变量说明与设置请查看下面的相关链接
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 周深 /Faouzia《解密 电影原声带》[FLAC/分轨][199.46MB]
- 英雄联盟s14亚军队伍是哪支 英雄联盟s14亚军队伍介绍
- 英雄联盟s14夺冠队伍是哪支 英雄联盟s14夺冠队SKT T1队伍介绍
- faker三冠王是哪几个赛季 faker三冠王赛季介绍
- 岩贵-音乐磁场(AI调音)2CD[WAV]
- 童丽《千愁记旧情》HQII头版限量编号2024[低速原抓WAV+CUE]
- 瑞鸣十五周年纪念3[HQCD限量编号头版][低速原抓WAV+CUE]
- 任天堂专利展示新VR外设:或会随同NS继任机型推出
- 博主制作“Switch 2”模型 与现有掌机对比
- 网友热议IGN为《马路RPG》打5分:要是多元化就能9分了
- 群星《从21世纪安全撤离 电影原声音乐专辑》[320K/MP3][191.19MB]
- 群星《从21世纪安全撤离 电影原声音乐专辑》[FLAC/分轨][592.38MB]
- 群星《奔赴!万人现场 第5期》[320K/MP3][106.99MB]
- 许魏洲.2024-CrossFever交互热爱【智慧大狗】【FLAC分轨】
- BEYOND.1993-FINAL.LIVE.WITH家驹【华纳】【WAV+CUE】