ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
<p align="right">2021年08月31日 13:54:49</p> [TOC] # 常用环境变量 ## 环境变量查看 ``` $ go env //打印Go所有默认环境变量 $ go env GOPATH //打印某个环境变量的值 ``` ## GOROOT 环境变量GOROOT标示Go语言的**安装目录** | 操作系统 | GOROOT默认值 | | --- | --- | | Windows | C:/Go | | Mac/Linux | /usr/local/go | GOROOT/bin包含你Go提供的工具链,需要加入到环境变量中 Linux设置GOROOT演示 ``` export GOROOT=~/go export PATH=$PATH:$GOROOT/bin ``` ## GOPATH 环境变量GOPATH用于指定我们的**开发工具区**,存放源代码、测试文件、库静态文件、可执行文件。 > 注意:GOPATH的值不能与GOROOT相同 **** | 操作系统 | GOPATH默认值 | | --- | --- | | Windows | %USERPROFILE%\\go | | Mac/Linux | $home/go | Linux设置GOPATH演示 ``` export GOPATH=/opt/go ``` 也可以设置多个工作区 ``` export GOPATH=/opt/go;~/go ``` > 上面的代码表示我们指定两个工作区,不过当我们使用`go get`命令去获取远程库的时候,一般会安装到第一个工作区当中。 ### GOPATH的子目录 GOPATH目录下的每个工作一般分为三个子目录:`src`,`pkg`,`bin` | 目录 | 说明 | | --- | --- | | src | 开发的源代码文件,其下面的目录称为包 | | pkg | 编译后的库静态文件 | | bin | 源代码编译后的可执行文件 | ## GOBIN 环境变量`GOBIN`表示我们开发程序编译后二进制命令的安装目录。 > 使用`go install` 命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为`GOPATH/bin`目录。 Linux设置GOBIN演示 ``` export GOBIN=$GOPATH/bin ``` # 交叉编译 交叉编译:在一个平台上就能生成在另外一个平台运行的可执行程序。Go语言进行交叉编译只需要设置GOOS和GOARCH这两个环境变量就可以了。 ## GOOS和GOARCH的值的查看 GOOS的默认值是我们当前的操作系统, 例如windows,linux,注意mac os操作的上的值是darwin。 GOARCH则表示CPU架构,如386,amd64,arm等。 ``` 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 ``` # 其他环境变量 ## 通用环境变量 ``` 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 ```