Golang常用环境变量说明与设置详解
来源:脚本之家
时间:2023-01-07 12:17:34 428浏览 收藏
知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《Golang常用环境变量说明与设置详解》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!
无论你是使用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/
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目录放的是我们开发的源代码文件,其下面对应的目录称为包,pkg放的是编译后的库静态文件,bin放的是源代码编译后台的可执行文件。
GOBIN
环境变量GOBIN表示我们开发程序编译后二进制命令的安装目录。
当我们使用go install命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为GOPATH/bin目录。
Linux设置GOBIN演示
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 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
小结
环境变量的设置,可以影响我们开发和编译项目的过程与结果,所以还是很有必要了解一下的。
更多关于Golang常用环境变量说明与设置请查看下面的相关链接
理论要掌握,实操不能落!以上关于《Golang常用环境变量说明与设置详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!
-
454 收藏
-
370 收藏
-
370 收藏
-
314 收藏
-
499 收藏
-
287 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习