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常用环境变量说明与设置请查看下面的相关链接

(0)

相关推荐

  • GO语言获取系统环境变量的方法

    本文实例讲述了GO语言获取系统环境变量的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "fmt"  "os"  //我们要用到os包中的env ) func main() {  //os.Getenv检索环境变量并返回值,如果变量是不存在的,这将是空的.  HOME:= os.Getenv("HOME")  fmt.Println(HOME)  fmt.Printf(os.Ge

  • django 环境变量配置过程详解

    刚开始使用django,在创建第一个app时被提示不知道命令runserver,百度得出是环境变量的问题. 1.配置python变量环境,C:\Python27\;C:\Python27\Scripts\ 2.配置django变量环境,C:\Python34\Lib\site-packages\Django-1.7.11-py3.4.egg\django\bin 或者 C:\Python27\Lib\site-packages\Django或者C:\Python27\Lib\site-packa

  • Golang常用环境变量说明与设置详解

    无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建. 但对于一些初学者来说,可能不太明白Go语言中常用的环境变量(Environment variables)的作用以及如何设置环境变量,今天我们来讲讲. 注意:Go提供的Windows操作系统安装包(.msi后缀)安装完成后,会自动配置几个常用的环境变量. 常用环境变量 Go语言中可以设置的环境变量有很多,每

  • vue cli4下环境变量和模式示例详解

    本文介绍了vue cli4下环境变量和模式示例详解,分享给大家,具体如下: 官方文档 环境变量 一个环境变量文件只包含环境变量的键值对: NODE_ENV=development VUE_APP_BASE_URL=http://127.0.0.1:8080/ 注意: NODE_ENV - 是 "development"."production" ."test"或者自定义的值.具体的值取决于应用运行的模式 BASE_URL - 会和 vue.con

  • Webpack设置环境变量的一些误区详解

    一.前言 日常的前端开发工作中,至少会有两套构建环境 一套开发时使用,构建结果用于本地开发调试,不进行代码压缩.打印 debug 信息.包含 sourcemap 文件等 一套发布时使用,构建结果用于线上,即代码都是压缩过的.运行时不打印 debug 信息.静态文件不包括 sourcemap 等 webpack 4.0 版本开始引入了 mode 的概念 选项 描述 development 会将 process.env.NODE_ENV 的值设为 development.启用 NamedChunks

  • dos 环境变量延迟扩展enabledelayedexpansion详解

    一,什么是延迟环境变量扩展? 延迟变量全称"延迟环境变量扩展",要理解这个东西,我们还得先理解一下什么叫变量扩展!   CMD在解释我们的命令的时候,首先会读取一条完整的命令,然后对其进行一些命令格式的匹配操作,看你所输入的 命令格式是不是符合它的要求.如果我们要在命令中引用一些变量,那么我们如何让CMD在解释我们的命令时,能识别 出这个变量呢?这时我们就可以在变量名字两边加一个%号,如%name%.当CMD在读取我们的整条命令进行格式匹配的时 候,就会发现name这个字符两边加了%号

  • Linux中环境变量配置的步骤详解

    简介 我们大家在平时使用Linux的时候,经常需要配置一些环境变量,这时候一般都是网上随便搜搜就有人介绍经验的.不过问题在于他们的方法各不相同,有人说配置在/etc/profile里,有人说配置在/etc/environment,有人说配置在~/.bash_profile里,有人说配置在~/.bashrc里,有人说配置在~/.bash_login里,还有人说配置在~/.profile里...这真是公说公有理...那么问题来了,Linux到底是怎么读取配置文件的呢,依据又是什么呢?下面这篇文章就来

  • python解释器pycharm安装及环境变量配置教程图文详解

    1.python解释器安装 下载地址:https://www.python.org/ 打开官网,点击downloads,选择操作系统,以windows为例: 选择python2与python3解释器版本(以python3.6.6及python2.7.16为例): 以python3.6.6为例,根据操作系统下载不同安装包(python2.7.16类似) 下载完成后,双击打开,选择自定义安装: 点击完成后,选择下一步,修改默认安装路径(方便查找,添加环境变量),完成后点击安装 2.配置环境变量 右击

  • Postman环境变量全局变量使用方法详解

    背景: [登录接口]中会返回sign值,[学生金币充值接口]会则需要用到该sign值,因此把sign设置为环境或全局变量,便于其他接口调用. 1.请求登录接口,获取sign值: 2.把sign值添加至环境变量或者全局变量,如下: (1)手动添加sign至环境变量: 并在[学生金币充值接口]调用该环境变量: (2)自动添加sign到环境变量: 在[登录接口]中使用Tests语句自动添加环境变量: 发送请求运行后,再次查看gold_cookie,已自动添加sign值: 现在可在[学生金币充值接口]中

  • Nest.js环境变量配置与序列化详解

    环境变量配置简述 程序在不同的环境下需要不同的环境变量,例如生产环境.测试环境以及开发环境所需要不同的数据库信息:链接地址.链接端口号.登录用户名和密码相关信息.为了解决这个问题需要进行相关操作. 在 Nest 中最佳方案创建一个 ConfigModule,该 ConfigModule 公开一个 ConfigService ,在 ConfigService 加载特有环境的 .env 文件. Nest 提供了 @nestjs/config 开箱即用的依赖包. 配置 npm 生态有很多相关的依赖包,

  • Anaconda环境变量的配置图文详解

    目录 前言 一.什么是环境变量 二.环境变量的作用 三.步骤 四.小结 前言 此文记录了我在进行 Anaconda 环境变量配置的做法 ,希望可以对有需要的朋友们有所帮助或者启发 一.什么是环境变量 环境变量一般是指操作系统中用来指定操作系统的一些参数,如:临时文件夹位置和系统文件夹位置等. 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序所将使用到的信息.例如 Windows 和 DOS 操作系统中的 path 环境变量,当要求系统运行一个程序而没有告诉他程序所在的完整

  • IOS UITableView和NavigationBar的常用设置详解

    IOS UITableView和NavigationBar的常用设置详解 TableView: 1.tableview常用基本设置 // 清除父类UIEdgeInsets self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0,0); //禁止滚动 self.tableView.scrollEnabled = NO; // tableview头部视图设置 self.tableView.tableHeaderView =一个UIView; //

随机推荐