温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Golang中有哪些环境变量

发布时间:2021-05-25 17:58:35 来源:亿速云 阅读:165 作者:Leah 栏目:编程语言

Golang中有哪些环境变量?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

常用环境变量

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 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其语法与 C语言相近,但并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能。

关于Golang中有哪些环境变量问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI