課程目標(biāo)
Window系統(tǒng)下的環(huán)境搭建,go的環(huán)境配置,MinGW的環(huán)境配置
Linux系統(tǒng)下的環(huán)境搭建,go的環(huán)境配置,Linux自帶gcc很方便
摘要
在macOS和Linux下gcc,在window下需要安裝MinGW。同時(shí)需要保證環(huán)境變量CGO_ENABLED被設(shè)置為1,這是表示cgo是否被啟用狀態(tài)。在本地構(gòu)建時(shí)CGO_ENABLED默認(rèn)啟用,在交叉構(gòu)建cgo是默認(rèn)禁用的。比如交叉構(gòu)建ARM環(huán)境運(yùn)行GO程序,需要手動(dòng)設(shè)置CGO_ENABLED環(huán)境變量。
主角登場
首先下載go,搭建本地的go開發(fā)環(huán)境。下載地址https://golang.google.cn/dl/,盡量選擇比較新的版本,因?yàn)榘姹静灰粯?,對于cgo的支持程度有一些區(qū)別,為了避免出現(xiàn)一些不必要的問題,建議使用最新穩(wěn)定版本。在下使用的是1.12.7。
提煉關(guān)鍵
安裝go的時(shí)候,主要配置以下幾個(gè)環(huán)境變量:
GOROOT:go安裝的根目錄(例如:D:\go\),安裝程序會(huì)自動(dòng)寫入系統(tǒng)環(huán)境變量,如果沒有,請自行加入系統(tǒng)環(huán)境變量中。
GOBIN:go的可執(zhí)行文件的存放目錄(%GOROOT%\bin)
PATH:系統(tǒng)的環(huán)境變量,需要將go環(huán)境變量拼接到此變量后面。
GOPATH:go的工作空間,包含go的開發(fā)目錄和依賴包目錄,如果沒有配置請手動(dòng)配置它,GOPATH工作空間主要有三個(gè)子目錄:
src:包含go的源碼文件
pkg:包對象,編譯好的庫文件
bin:可執(zhí)行文件目錄
配置好后可運(yùn)行g(shù)o env命令來查看go環(huán)境是否配置正確

MinGW是什么
MinGW是“Minimalist GNU for Windows”的縮寫,是原生Microsoft Windows應(yīng)用程序的極簡主義開發(fā)環(huán)境。MinGW提供了一個(gè)完整的開源編程工具集,適用于本機(jī)MS-Windows應(yīng)用程序的開發(fā),并且不依賴于任何第三方C-Runtime DLL。MinGW編譯器提供對Microsoft C運(yùn)行時(shí)功能和某些特定于語言的運(yùn)行時(shí)的訪問。MinGW是Minimalist,它不會(huì),也絕不會(huì)嘗試為MS-Windows上的POSIX應(yīng)用程序部署提供POSIX運(yùn)行時(shí)環(huán)境。如果您希望在此平臺上部署POSIX應(yīng)用程序,請考慮使用Cygwin。
也就是說很多開源庫需要的庫是由MinGW提供,在window環(huán)境下如果想用這些庫,就需要MinGW的幫助。后續(xù)的編譯opencv也需要用到。
Window環(huán)境配置
安裝go,下載地址為:https://dl.google.com/go/go1.12.7.windows-amd64.msi,安裝是比較簡單的,點(diǎn)擊安裝程序按提示安裝,需要注意的是記住你go的安裝目錄,后面需要用到。我的安裝目錄是:D:\go\。檢查下go是否能在控制臺下運(yùn)行,調(diào)出運(yùn)行框,在鍵盤上按下”win圖標(biāo)鍵”+”R”?輸入cmd回車

輸入命令go version,如果輸入go的版本信息那說明go安裝成功了,如果沒有輸出有可能是go沒有加入到PATH中,需要將D:\go\bin加入到系統(tǒng)的環(huán)境變量PATH中。

配置Go的工作空間,需要配置環(huán)境變量GOPATH,就是你開發(fā)go項(xiàng)目的項(xiàng)目目錄,最新版本在安裝的時(shí)候就自動(dòng)配置好了,早期版本是需要手動(dòng)配置,但是建議還是手動(dòng)配置下,因?yàn)橄到y(tǒng)默認(rèn)是C:\Users\當(dāng)前用戶名\go
配置如下:
?


開發(fā)go的IDE
本人使用的是LiteIDE,簡單好用,輕量級,而且還能編譯出不同操作系統(tǒng)下的可執(zhí)行文件,在window下開發(fā)挺好用的。當(dāng)然每個(gè)人都可根據(jù)個(gè)人喜好下載自己熟悉的IDE進(jìn)行開發(fā)。
使用LiteIDE如果已經(jīng)安裝了go并且要升級go到新版本,這時(shí)候LiteIDE的代碼提示功能可能就不能用,需要重新再去編譯下gocode,然后覆蓋到LiteIDE安裝目錄下的bin目錄。下載地址:
http://sourceforge.net/projects/liteide/files/x36/liteidex36.windows-qt5.9.5.zip/download
默認(rèn)使用系統(tǒng)環(huán)境變量配置



這里也介紹下IntelliJ IDEA的配置吧,這個(gè)ide挺耗內(nèi)存,個(gè)人感覺挺重,不是很喜歡用,但是它的功能比較強(qiáng)大,提示功能也比較好,因此介紹下這個(gè)IDE的配置吧。
IntelliJ IDEA需要安裝go的插件才能進(jìn)行g(shù)o語言的開發(fā),可以在Marketplace上下載,也可以下載插件到本地之后,在本地安裝插件。建議下載插件到本地
https://nchc.dl.sourceforge.net/project/liteide/x36/liteidex36.windows-qt5.9.5.zip
從插件商店下載不一定能下載得下來。
首先完成go的環(huán)境配置之后,并且也配置了GOPATH的工作空間配置后,本人配置為D:\go-project,在IntelliJ IDEA新建項(xiàng)目,新建Go項(xiàng)目


選擇我們的GOPATH作為工作空間

在GOPATH下新建目錄src、pkg、bin這三個(gè)目錄,這三個(gè)目錄上述已經(jīng)有介紹了。

新建一個(gè)go的編譯配置,名稱自己取一個(gè)。Run kind選擇Directory,Directory選擇D:\go-project\src,這里注意是要選擇GOPATH下的src目錄。Output directory選擇D:\go-project\bin,這個(gè)你可以根據(jù)自己喜歡配置輸出可執(zhí)行文件的目錄,我是習(xí)慣放GOPATH工作空間下的bin目錄。在src下新建一個(gè)main.go的源碼文件,輸出hello world測試我們配置是否能正常。




這里還需要注意的是IntelliJ IDEA也是有GOPATH的配置的,只是它默認(rèn)使用的是系統(tǒng)GOPATH的配置,當(dāng)然你可以不指定使用系統(tǒng)的GOPATH,自己去修改自身GOPATH的路徑。在file–settings–Languages & Frameworks下,使用自己指定的GOPATH時(shí),Use GOPATH that’s defined in system environment前面的勾要去掉。

這樣配置的意思我大概做個(gè)解釋,GOPATH相當(dāng)于我們一個(gè)大項(xiàng)目src就是放項(xiàng)目的目錄,所以你編譯類型選目錄的時(shí)候,就要把路徑指向src目錄。Src目錄下又可以包含多個(gè)獨(dú)立的子項(xiàng)目,用目錄區(qū)分開來,我個(gè)人實(shí)際開發(fā)中就是這樣去劃分的,比如我GOPATH的src目錄下有2個(gè)項(xiàng)目,一個(gè)叫app核心代碼庫,一個(gè)叫web站點(diǎn)代碼,web會(huì)引用app庫,app為web項(xiàng)目提供各種類、函數(shù),那么這時(shí)你要新建一個(gè)go 編譯配置,因?yàn)檫@時(shí)候你啟動(dòng)的項(xiàng)目變成時(shí)web了,而不是默認(rèn)src目錄下的main.go了。于是我們新建了一個(gè)goweb的編譯配置如下:

編寫下app/lib.go文件代碼很簡單就是輸出hello world

編寫web/main.go代碼如下,并運(yùn)行成功輸入hello world。至此所有配置完成。

跨平臺編譯方案
工作中經(jīng)常使用的go服務(wù)器基本都是Linux操作系統(tǒng),所以本人的編譯方案就是在window開發(fā)完成,并調(diào)試沒問題后,將go的源碼同步到Linux服務(wù)器,當(dāng)然Linux服務(wù)器上也需要用go的環(huán)境配置好后,然后再Linux上執(zhí)行g(shù)o build -i編譯成Linux下的可執(zhí)行文件。為此本人利用go開發(fā)了一套自動(dòng)部署的系統(tǒng),完成開發(fā)環(huán)境自動(dòng)同步到服務(wù)器上,并完成自動(dòng)部署的功能,后續(xù)如果有時(shí)間可以將此項(xiàng)目寫成教程公開出來。

IntelliJ IDEA在Window環(huán)境下也是可以編譯Linux可執(zhí)行文件的,但是不支持cgo就是了,當(dāng)你的go項(xiàng)目沒有用到cgo的情況下,是可以直接在Window下編譯可以在Linux系統(tǒng)下運(yùn)行的程序的。需要加入環(huán)境變量,配置關(guān)鍵如下:
1.GOARCH:操作系統(tǒng)架構(gòu),值有amd64(64位操作系統(tǒng))、386(32位系統(tǒng))、arm(arm系統(tǒng))。
2.GOOS:操作系統(tǒng)名,值有l(wèi)inux、windows、freebsd、darwin。
3.CGO_ENABLED:cgo是否啟用,如果是window編譯不包含cgo的項(xiàng)目,必須設(shè)置為0。

安裝MinGW,看自己的系統(tǒng)是32位還是64位,如果是64位建議下載MinGW-w64,本人系統(tǒng)就是64位的所以安裝的是MinGW-w64。下載地址:http://www.mingw-w64.org/doku.php/download

Msys2也是可以,這個(gè)包括了MinGw和Cygwin,相當(dāng)于這兩者的結(jié)合體。需要配置,后續(xù)有機(jī)會(huì)講些下Msys2的配置。
安裝時(shí)設(shè)置選擇如下:

安裝目錄依據(jù)自己喜好而定,之后一直next直到安裝完成,安裝可能會(huì)比較慢,因?yàn)樾枰螺d所需要的文件,耐心等待安裝完成。
需要將bin目錄加入到PATH中,環(huán)境配置:


Linux環(huán)境配置
安裝go,下載地址https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz,解壓到目錄。
解壓命令:
tar zxvf go1.12.7.linux-amd64.tar.gz
解壓完成后,目錄為/home/wjp/go
為go配置環(huán)境變量:
執(zhí)行命令:
sudo vim /etc/profile
在最底部加入新配置
export GOROOT=/home/wjp/go
export GOPATH=/home/wjp/go-src #go的工作空間
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN:$GOPATH/bin

加載配置執(zhí)行命令
source /etc/profile
測試環(huán)境是否配置成功執(zhí)行命令
go version,如果輸出版本則安裝成功

由于cgo是調(diào)用gcc進(jìn)行編譯的,而Linux系統(tǒng)本身就自帶gcc,如果沒有自行安裝下就可以了。
Linux如果是服務(wù)器版的,那開發(fā)go效率不高,建議是在window下開發(fā)完成后,在拷貝到Linux上進(jìn)行編譯生成。除非你用的是Linux桌面版,可以使用一些IDE進(jìn)行開發(fā),這里就不做介紹了。
結(jié)束
至此go和cgo所需的環(huán)境搭建完畢,后面章節(jié)可以講解關(guān)于cgo的開發(fā)了。
轉(zhuǎn)載至個(gè)人博客https://blog.qiurank.com