go env环境变量详解(二)

967 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

这几天太忙了,都快忘记要更新我的成长小短文了,今天加紧来一篇吧。

image.png

1.GCCGO

gccgo 属于 gcc 编译器集合,是 gcc 针对go 语言的前端实现;gccgo 的编译速度比gc较慢一点,但是可以生成更优的代码,因此程序执行速度会更快。
golang 的默认编译器是 gc, gc 编译器已支持主流的处理器,而 gccgo 也对 gc 不支持的处理器进行了支持测试;
通过Go正式版本安装的go命令已经可以支持 gccgo,需要使用 -compiler选项:go build -compiler=gccgo
对于用户,如果需要更好编译优化,或者是使用 gc 所不支持的处理器或操作系统,gccgo 可能是一个更好的选择。

2.GOARCH

为其编译代码的架构或处理器。例如 amd64、386、arm、ppc64.通常与GOOS搭配使用,实现交叉编译,在不同平台运行代码,如:Linux、Windows、Mac

3.GOOS

默认是我们当前开发环境的操作系统,例如:Linux、Windows、Mac;需要注意的是Mac默认操作系统该变量的值是darwin,跟GOARCH一起使用,进行代码交叉编译。例如编译Mac代码:

//1.windows下编译Mac
//CGO_ENABLED 表示CGO禁用,交叉编译中不能使用CGO的.因为CGO不支持交叉编译。
//当我们使用了CGO时,要想实现跨平台编译,同时需要让C/C++代码也支持跨平台。
//如何实现CGO跨平台编译,网上都有相应解决方案
SET CGO_ENABLED=0  
//mac 对应 darwin
SET GOOS=darwin
//目标平台的体系架构,目前市面上的个人电脑一般都是amd64架构的
SET GOARCH=amd64
go build main.go
//2.Mac下编译Windows、Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

需要注意的是,该选项设置完之后,必须马上记得恢复当前操作系统,作者之前做了一个项目,运营那边是Mac电脑,所以在Windows上编译了Mac环境的代码,没有切换回来,后边安装依赖总是报命令找不到,一查发现安装的二进制文件在bin/darwin/目录下,并非Windows的.exe文件。最后切换了一下环境变量好了,命令:go env -w GOOS=windows或者 go env -u GOOS(将该环境变量设置为默认值)

4.GOBIN

该环境变量存放go install编译打包后的二进制文件,默认是在$GOPATH/bin目录下。

5.GOCACHE

通过go build产生的缓存,这可以加快编译的速度,可以通过go clean -cache来清除编译缓存

6.GOMODCACHE

go命令存储下载模块的目录

7.GODEBUG

启用各种调试工具,它的格式是key=value格式已逗号分隔开,具体详情可以执行go doc runtime,查看命令详情

8.GOENV

go环境变量配置文件的位置。不能用go env -w来设置改环境变量。

9.GOFLAGS

GOFLAGS是个"-flag=value"的命令行参数列表,当执行go命令时,默认会添加这个环境变量里设置的参数。

例如使用vendor 模式管理Go的mod,可以设置命令:GOFLAGS=-mod=vendor,但是该方式不推荐使用

10.GOOS

编译代码的操作系统,例如:linux, darwin, windows, netbsd。

好了,到这里Go的常用的环境变量基本介绍差不多了,感兴趣的小伙伴可以通过go help environment的方式查看Go环境变量的说明,有不对的地方希望大家指正。

image.png