内容简介:golang的环境变量有不少,平时安装完go之后,我们关注的一般只是GOPATH、GOROOT这些,还有与go mod有关的几个环境变量,对于其他变量了解不多,想要深入了解这门语言,有必要了解其他环境变量。我们先总的来了解下有哪些环境变量,以及它们代表的含义:你可以使用以下命令查看你的go环境变量:
golang的环境变量有不少,平时安装完 go 之后,我们关注的一般只是GOPATH、GOROOT这些,还有与go mod有关的几个环境变量,对于其他变量了解不多,想要深入了解这门语言,有必要了解其他环境变量。
我们先总的来了解下有哪些环境变量,以及它们代表的含义:
$ go help environment The go command and the tools it invokes consult environment variables for configuration. If an environment variable is unset, the go command uses a sensible default setting. To see the effective setting of the variable <NAME>, run 'go env <NAME>'. To change the default setting, run 'go env -w <NAME>=<VALUE>'. Defaults changed using 'go env -w' are recorded in a Go environment configuration file stored in the per-user configuration directory, as reported by os.UserConfigDir. The location of the configuration file can be changed by setting the environment variable GOENV, and 'go env GOENV' prints the effective location, but 'go env -w' cannot change the default location. See 'go help env' for details. General-purpose environment variables: GCCGO The gccgo command to run for 'go build -compiler=gccgo'. GOARCH The architecture, or processor, for which to compile code. Examples are amd64, 386, arm, ppc64. GOBIN The directory where 'go install' will install a command. GOCACHE The directory where the go command will store cached information for reuse in future builds. GODEBUG Enable various debugging facilities. See 'go doc runtime' for details. GOENV The location of the Go environment configuration file. Cannot be set using 'go env -w'. GOFLAGS A space-separated list of -flag=value settings to apply to go commands by default, when the given flag is known by the current command. Each entry must be a standalone flag. Because the entries are space-separated, flag values must not contain spaces. Flags listed on the command line are applied after this list and therefore override it. GOOS The operating system for which to compile code. Examples are linux, darwin, windows, netbsd. GOPATH For more details see: 'go help gopath'. GOPROXY URL of Go module proxy. See 'go help modules'. GOPRIVATE, GONOPROXY, GONOSUMDB Comma-separated list of glob patterns (in the syntax of Go's path.Match) of module path prefixes that should always be fetched directly or that should not be compared against the checksum database. See 'go help module-private'. GOROOT The root of the go tree. GOSUMDB The name of checksum database to use and optionally its public key and URL. See 'go help module-auth'. GOTMPDIR The directory where the go command will write temporary source files, packages, and binaries. Environment variables for use with cgo: AR The command to use to manipulate library archives when building with the gccgo compiler. The default is 'ar'. CC The command to use to compile C code. CGO_ENABLED Whether the cgo command is supported. Either 0 or 1. CGO_CFLAGS Flags that cgo will pass to the compiler when compiling C code. CGO_CFLAGS_ALLOW A regular expression specifying additional flags to allow to appear in #cgo CFLAGS source code directives. Does not apply to the CGO_CFLAGS environment variable. CGO_CFLAGS_DISALLOW A regular expression specifying flags that must be disallowed from appearing in #cgo CFLAGS source code directives. Does not apply to the CGO_CFLAGS environment variable. CGO_CPPFLAGS, CGO_CPPFLAGS_ALLOW, CGO_CPPFLAGS_DISALLOW Like CGO_CFLAGS, CGO_CFLAGS_ALLOW, and CGO_CFLAGS_DISALLOW, but for the C preprocessor. CGO_CXXFLAGS, CGO_CXXFLAGS_ALLOW, CGO_CXXFLAGS_DISALLOW Like CGO_CFLAGS, CGO_CFLAGS_ALLOW, and CGO_CFLAGS_DISALLOW, but for the C++ compiler. CGO_FFLAGS, CGO_FFLAGS_ALLOW, CGO_FFLAGS_DISALLOW Like CGO_CFLAGS, CGO_CFLAGS_ALLOW, and CGO_CFLAGS_DISALLOW, but for the Fortran compiler. CGO_LDFLAGS, CGO_LDFLAGS_ALLOW, CGO_LDFLAGS_DISALLOW Like CGO_CFLAGS, CGO_CFLAGS_ALLOW, and CGO_CFLAGS_DISALLOW, but for the linker. CXX The command to use to compile C++ code. FC The command to use to compile Fortran code. PKG_CONFIG Path to pkg-config tool. Architecture-specific environment variables: GOARM For GOARCH=arm, the ARM architecture for which to compile. Valid values are 5, 6, 7. GO386 For GOARCH=386, the floating point instruction set. Valid values are 387, sse2. GOMIPS For GOARCH=mips{,le}, whether to use floating point instructions. Valid values are hardfloat (default), softfloat. GOMIPS64 For GOARCH=mips64{,le}, whether to use floating point instructions. Valid values are hardfloat (default), softfloat. GOWASM For GOARCH=wasm, comma-separated list of experimental WebAssembly features to use. Valid values are satconv, signext. Special-purpose environment variables: GCCGOTOOLDIR If set, where to find gccgo tools, such as cgo. The default is based on how gccgo was configured. GOROOT_FINAL The root of the installed Go tree, when it is installed in a location other than where it is built. File names in stack traces are rewritten from GOROOT to GOROOT_FINAL. GO_EXTLINK_ENABLED Whether the linker should use external linking mode when using -linkmode=auto with code that uses cgo. Set to 0 to disable external linking mode, 1 to enable it. GIT_ALLOW_PROTOCOL Defined by Git. A colon-separated list of schemes that are allowed to be used with git fetch/clone. If set, any scheme not explicitly mentioned will be considered insecure by 'go get'. Because the variable is defined by Git, the default value cannot be set using 'go env -w'. Additional information available from 'go env' but not read from the environment: GOEXE The executable file name suffix (".exe" on Windows, "" on other systems). GOGCCFLAGS A space-separated list of arguments supplied to the CC command. GOHOSTARCH The architecture (GOARCH) of the Go toolchain binaries. GOHOSTOS The operating system (GOOS) of the Go toolchain binaries. GOMOD The absolute path to the go.mod of the main module, or the empty string if not using modules. GOTOOLDIR The directory where the go tools (compile, cover, doc, etc...) are installed.
你可以使用以下命令查看你的go环境变量:
$ go env
除开跟go mod有关的几个环境变量还有跟GOPATH有关的几个我们不谈,因为我已经在上篇文章讲go mod的时候聊过了,接下来就来了解一下其他的环境变量。
GOARCH 和 GOOS
GOARCH :cpu架构,386、amd64、arm等,在交叉编译的时候设置,可以编译不同平台的包。
GOOS:平台,linux、windows等,通常和GOARCH搭配使用。
这里贴一下在不同平台下交叉编译的命令:
Mac下编译Linux, Windows平台的64位可执行程序:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
Linux下编译Mac, Windows平台的64位可执行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
Windows下编译Mac, Linux平台的64位可执行程序:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build test.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build test.go
GOCACHE
这是go build产生的缓存,这可以加快编译速度,我在GOCACHE打印出来的路径下看到了一个README文件,它解释了GOCACHE。
This directory holds cached build artifacts from the Go build system. Run "go clean -cache" if the directory is getting too large. See golang.org to learn more about Go.
可以使用"go clean -cache"命令清除编译缓存。
GOENV
本地的go环境文件存储位置,不可以用"go env -w"设置它。
小结
以上为了解golang的环境变量的第一阶段,还有一些环境变量等下篇文章再继续。
欢迎关注我的公众号: onepunchgo ,会整理相关的文档和资料。
image
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
拆掉互联网那堵墙
庄良基 / 经济日报出版社 / 2014-6 / 25.80
都在说道互联网、说道电子商务、说道移动APP、说道微信、说道互联网金融......我们该如何认识互联网?中小微企业该如何借力互联网?互联网很神秘吗?很高深莫测吗? 其实互联网并没有什么神秘的,也没有什么高深莫测的!互联网无非是人类发明的工具而已,既然是工具,我们就一定可以驾驭和使用它。既然可以双重使用,就理当让所有有人都容易掌握并轻松驾驭。 互联网离我们很远吗?互联网界的成功故事都是那......一起来看看 《拆掉互联网那堵墙》 这本书的介绍吧!