Golang中有哪些環(huán)境變量?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的連江網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
常用環(huán)境變量
Go語言中可以設(shè)置的環(huán)境變量有很多,每個環(huán)境變量都有其作用,不過很多我們可能都用不到,一般需要了解也是最重要的有以下幾個:
$ go env //打印Go所有默認(rèn)環(huán)境變量 $ go env GOPATH //打印某個環(huán)境變量的值
環(huán)境變量GOROOT表示Go語言的安裝目錄。
在Windows中,GOROOT的默認(rèn)值是C:/go,而在Mac OS或Linux中GOROOT的默認(rèn)值是usr/loca/go,如果將Go安裝在其他目錄中,而需要將GOROOT的值修改為對應(yīng)的目錄。
另外,GOROOT/bin則包含Go為我們提供的工具鏈,因此,應(yīng)該將GOROOT/bin配置到環(huán)境變量PATH中,方便我們在全局中使用Go工具鏈。
export GOROOT=~/go export PATH=$PATH:$GOROOT/bin
注意,GOPATH的值不能與GOROOT相同。
環(huán)境變量GOPATH用于指定我們的開發(fā)工作區(qū)(workspace),是存放源代碼、測試文件、庫靜態(tài)文件、可執(zhí)行文件的工作。
在類Unix(Mac OS或Linux)操作系統(tǒng)中GOPATH的默認(rèn)值是$home/go。而在Windows中GOPATH的默認(rèn)值則為%USERPROFILE%\go(比如在Admin用戶,其值為C:\Users\Admin\go)。
當(dāng)然,我們可以通過修改GOPATH來更換工作區(qū),比如將工作設(shè)置opt/go方式如下:
export GOPATH=/opt/go
還有,可以在GOPATH中設(shè)置多個工作區(qū),如:
export GOPATH=/opt/go;$home/go
上面的代碼表示我們指定兩個工作區(qū),不過當(dāng)我們使用go get命令去獲取遠(yuǎn)程庫的時候,一般會安裝到第一個工作區(qū)當(dāng)中。
按照Go開發(fā)規(guī)范,GOPATH目錄下的每個工作一般分為三個子目錄:src,pkg,bin,所以我們看到的每個工作區(qū)是這樣子的:
bin/
hello # 可執(zhí)行文件
outyet # 可執(zhí)行文件
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目錄放的是我們開發(fā)的源代碼文件,其下面對應(yīng)的目錄稱為包,pkg放的是編譯后的庫靜態(tài)文件,bin放的是源代碼編譯后臺的可執(zhí)行文件。
環(huán)境變量GOBIN表示我們開發(fā)程序編譯后二進(jìn)制命令的安裝目錄。
當(dāng)我們使用go install命令編譯和打包應(yīng)用程序時,該命令會將編譯后二進(jìn)制程序打包GOBIN目錄,一般我們將GOBIN設(shè)置為GOPATH/bin目錄。
export GOBIN=$GOPATH/bin
上面的代碼中,我們都是使用export命令設(shè)置環(huán)境變量的,這樣設(shè)置只能在當(dāng)前shell中有效,如果想一直有效,如在Linux中,則應(yīng)該將環(huán)境變量添加到/etc/profile等文件當(dāng)中。
什么是交叉編譯?所謂的交叉編譯,是指在一個平臺上就能生成可以在另一個平臺運(yùn)行的代碼,例如,我們可以32位的Windows操作系統(tǒng)開發(fā)環(huán)境上,生成可以在64位Linux操作系統(tǒng)上運(yùn)行的二進(jìn)制程序。
在其他編程語言中進(jìn)行交叉編譯可能要借助第三方工具,但在Go語言進(jìn)行交叉編譯非常簡單,最簡單只需要設(shè)置GOOS和GOARCH這兩個環(huán)境變量就可以了。
GOOS的默認(rèn)值是我們當(dāng)前的操作系統(tǒng), 如果windows,linux,注意mac os操作的上的值是darwin。 GOARCH則表示CPU架構(gòu),如386,amd64,arm等。
獲取GOOS和GOARCH的值
我們可以使用go env命令獲取當(dāng)前GOOS和GOARCH的值。
$ go env GOOS GOARCH
GOOS和GOARCH的值成對出現(xiàn),而且只能是下面列表對應(yīng)的值。
$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
示例
$ GOOS=linux GOARCH=amd64 go build main.go
$ GOOS=android GOARCH=arm GOARM=7 go build main.go
雖然我們一般雖然配置的環(huán)境變量就那么幾個,但其實Go語言是提供了非常多的環(huán)境變量,讓我們可以自由地定制開發(fā)和編譯器行為。
下面是Go提供的所有的環(huán)境變量列表,一般可以劃分為下面幾大類,大概了解一下就可以了,因為有些環(huán)境變量我們可以永遠(yuǎn)都不會用到。
GCCGO
GOARCH
GOBIN
GOCACHE
GOFLAGS
GOOS
GOPATH
GOPROXY
GORACE
GOROOT
GOTMPDIR
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 是Google開發(fā)的一種靜態(tài)強(qiáng)類型、編譯型、并發(fā)型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能。
關(guān)于Golang中有哪些環(huán)境變量問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。