无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建。 但对于一些初学者来说,可能不太明白Go语言中常用的环境变量(Environment varia
无论你是使用Windows,Linux还是Mac OS操作系统来开发Go应用程序,在安装好Go安装语言开发工具之后,都必须配置好Go语言开发所要求的 环境变量,才算初步完成Go开发环境的搭建。 但对于一些初学者来说,可能不太明白Go语言中常用的环境变量(Environment variables)的作用以及如何设置环境变量,今天我们来讲讲。 注意:Go提供的Windows操作系统安装包(.msi后缀)安装完成后,会自动配置几个常用的环境变量。 常用环境变量Go语言中可以设置的环境变量有很多,每个环境变量都有其作用,不过很多我们可能都用不到,一般需要了解也是最重要的有以下几个:
GOROOT
在Windows中,GOROOT的默认值是C:/go,而在Mac OS或Linux中GOROOT的默认值是usr/loca/go,如果将Go安装在其他目录中,而需要将GOROOT的值修改为对应的目录。 另外,GOROOT/bin则包含Go为我们提供的工具链,因此,应该将GOROOT/bin配置到环境变量PATH中,方便我们在全局中使用Go工具链。 Linux设置GOROOT演示
GOPATH
环境变量GOPATH用于指定我们的开发工作区(workspace),是存放源代码、测试文件、库静态文件、可执行文件的工作。 在类Unix(Mac OS或Linux)操作系统中GOPATH的默认值是$home/go。而在Windows中GOPATH的默认值则为%USERPROFILE%\go(比如在Admin用户,其值为C:\Users\Admin\go)。 当然,我们可以通过修改GOPATH来更换工作区,比如将工作设置opt/go方式如下: Linux设置GOPATH演示
还有,可以在GOPATH中设置多个工作区,如:
GOPATH的子目录上面的代码表示我们指定两个工作区,不过当我们使用go get命令去获取远程库的时候,一般会安装到第一个工作区当中。 按照Go开发规范,GOPATH目录下的每个工作一般分为三个子目录:src,pkg,bin,所以我们看到的每个工作区是这样子的:
src目录放的是我们开发的源代码文件,其下面对应的目录称为包,pkg放的是编译后的库静态文件,bin放的是源代码编译后台的可执行文件。 GOBIN
当我们使用go install命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为GOPATH/bin目录。 Linux设置GOBIN演示
上面的代码中,我们都是使用export命令设置环境变量的,这样设置只能在当前shell中有效,如果想一直有效,如在Linux中,则应该将环境变量添加到/etc/profile等文件当中。 交叉编译什么是交叉编译?所谓的交叉编译,是指在一个平台上就能生成可以在另一个平台运行的代码,例如,我们可以32位的Windows操作系统开发环境上,生成可以在64位Linux操作系统上运行的二进制程序。 在其他编程语言中进行交叉编译可能要借助第三方工具,但在Go语言进行交叉编译非常简单,最简单只需要设置GOOS和GOARCH这两个环境变量就可以了。 GOOS与GOARCHGOOS的默认值是我们当前的操作系统, 如果windows,linux,注意mac os操作的上的值是darwin。 GOARCH则表示CPU架构,如386,amd64,arm等。 获取GOOS和GOARCH的值 我们可以使用go env命令获取当前GOOS和GOARCH的值。
GOOS和GOARCH的取值范围GOOS和GOARCH的值成对出现,而且只能是下面列表对应的值。
示例 编译在64位Linux操作系统上运行的目标程序
编译arm架构Android操作上的目标程序
环境变量列表虽然我们一般虽然配置的环境变量就那么几个,但其实Go语言是提供了非常多的环境变量,让我们可以自由地定制开发和编译器行为。 下面是Go提供的所有的环境变量列表,一般可以划分为下面几大类,大概了解一下就可以了,因为有些环境变量我们可以永远都不会用到。 通过环境变量
和cgo一起使用的环境变量
与系统架构体系相关的环境变量
专用的环境变量
其他环境变量
小结 环境变量的设置,可以影响我们开发和编译项目的过程与结果,所以还是很有必要了解一下的。 |
2022-04-28
2022-04-21
2022-05-13
2022-08-17
2022-02-25