新聞中心
mac下打patch后編譯安裝golang
因為業(yè)務(wù)上的需求,架構(gòu)師改了hack了一下golang的源碼,放出一個patch文件,給源碼打了patch之后,需要重新編譯go源碼,
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計,1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
我是用 brew 安裝的golang, 先用 go env 看看
鎖定了源碼的路徑: /usr/local/Cellar/go/1.7.5/libexec
Go從1.5版本開始實現(xiàn)“自舉”(Bootstrap),也就是用Go來實現(xiàn)Go、用Go來編譯Go,因此這里的意思是系統(tǒng)默認用go1.4來編譯golang,
但是我的系統(tǒng)里面并沒有g(shù)o1.4,這里偷個懶
等待編譯測試完成即可。
如何在Mac源碼安裝Go1.5開發(fā)環(huán)境
Go1.5開發(fā)環(huán)境依賴Go1.4版本作為引導(dǎo),因為Go1.5使用Go本身來編譯安裝Go,所以必須保證服務(wù)器上已經(jīng)安裝Go1.4,這完全是為了解決先有雞還是先有蛋的問題,當(dāng)然如果你想避免編譯安裝1.4也可以直接使用二進制包。
在這里假設(shè)你希望將go1.5安裝到$HOME/go1.5目錄下,只需要以下幾步:
下載Go1.5的源碼放到$HOME/go1.5目錄下
在安裝Go1.5之前需要將Go1.4放到$HOME/go1.4下面或者export GOROOT_BOOTSTRAP=/go1.4安裝目錄/
到$HOME/go1.5/src/下執(zhí)行all.bash即可
我習(xí)慣將軟件安裝至/usr/local/下,以下為我安裝Go1.5(/usr/local/go1.5)的步驟:
wget
tar zxvf go1.5.1.src.tar.gz
mv ./go /usr/local/go1.5
wget
tar zxvf go1.4.3.src.tar.gz
mv ./go /usr/local/go-bootstrap1.4/
cd /usr/local/go-bootstrap1.4/src
./all.bash //編譯安裝Go1.4,有可能test不通過,只要編譯通過,test可忽略,目的是需要go1.4的二進制包來編譯1.5
cd /usr/local/go1.5/src
GOROOT_BOOTSTRAP=/usr/local/go-bootstrap1.4 ./all.bash
//可在環(huán)境變量中添加GOROOT_BOOTSTRAP,然后再編譯Go1.5
以下為網(wǎng)摘:
From C to Go
The gc tool chain is being converted from C to Go.
An ongoing process, started early 2014.
Russ Cox says "It'll be done by March [2015]."
New link tool to replace 6l, 8l, etc.
New asm tool to replace 6a, 8a, etc.
Machine-translated gc to replace 6g, 8g, etc.
Design doc:
golang.org/s/go13compiler
Go 1.5 will have no C code in the tool chain or runtime.
Go語言將使用Go代替C重寫運行時環(huán)境
Go 1.4 的合并窗口在 9 月份將關(guān)閉,從現(xiàn)在開始到12月份發(fā)布 Go 1.4 之前將只接受 bug 修復(fù)和小調(diào)整。
Go 1.4 最主要的變化是將使用 Go 語言本身來重寫 Go 的運行時,而之前是采用 C 語言開發(fā)。這也是為什么 Go 的發(fā)行版中包含一個 C
編譯器的原因。
使用 Go 重寫的好處是:
當(dāng)前如果在 Goroutine 的調(diào)用堆棧中發(fā)現(xiàn) C 代碼,runtime 將在需要增長堆棧時回滾到老的堆棧方法。如果使用 Go 來重寫
runtime,那么堆??截惖姆椒ň蜁痈咝?/p>
目前轉(zhuǎn)換工作只計劃轉(zhuǎn) Go 編譯器 (5g, 6g, 8g), 而不是 C 編譯器,降低運行時中的 C 代碼行數(shù),甚至可能完全清除
注意
這是 golang.org 分發(fā)版,也就是 gc ,而不是 gccgo
這是不同的 C 編譯器,gc 工具鏈將使用你系統(tǒng)的 C 編譯器來編譯,gc 運行時則使用它的 C 編譯器來編譯
8月20日后增加的轉(zhuǎn)換行可能跟 this request 有關(guān).
Go語言將使用Go代替C重寫運行時環(huán)境
— 從現(xiàn)在開始到12月份 Go 1.4版本發(fā)布前,Go將只接受Bug修復(fù)和小范圍的調(diào)整,Go
1.4版本將實現(xiàn)使用Go語言來重寫Go的運行時環(huán)境。
Golang入門到項目實戰(zhàn) | golang簡介及安裝
Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強類型、編譯型語言。Go 語言語法與 C 相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計算。
go語言特點
go語言的應(yīng)用領(lǐng)域
哪些公司(項目)在使用go語言
下載開發(fā)包
windows下安裝
1.打開下載的msi可執(zhí)行文件,根據(jù)提示進行安裝。默認會安裝在c:/Program Files/go目錄下面。會自動添加go可執(zhí)行文件環(huán)境變量。
2.驗證安裝情況
a.打開命令行
b. 輸入$ go version
linux下安裝
1.在/usr/local/下面創(chuàng)建一個目錄go
2.下載壓縮文件到該目錄(/usr/local/go),并解壓縮
3.添加/usr/local/go/bin到PATH環(huán)境變量,打開$HOME/.profile 或者/etc/profile輸入如下內(nèi)容:
4.執(zhí)行如下命令使得配置文件及時生效
驗證
1.如果你的mac有Homebrew包管理工具,可以使用它來安裝
2.如果沒有下載mac安裝包,根據(jù)提示安裝
3.默認安裝在/usr/local/go下面
4.設(shè)置環(huán)境變量,同Linux
如何為Linux安裝Go語言
1.1Go安裝Go的三種安裝方式Go有多種安裝方式,你可以選擇自己喜歡的。這里我們介紹三種最常見的安裝方式:Go源碼安裝:這是一種標(biāo)準(zhǔn)的軟件安裝方式。對于經(jīng)常使用Unix類系統(tǒng)的用戶,尤其對于開發(fā)者來說,從源碼安裝可以自己定制。Go標(biāo)準(zhǔn)包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統(tǒng)。這種方式適合快速安裝,可根據(jù)自己的系統(tǒng)位數(shù)下載好相應(yīng)的安裝包,一路next就可以輕松安裝了。**推薦這種方式**第三方工具安裝:目前有很多方便的第三方軟件包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應(yīng)系統(tǒng)的用戶。最后,如果你想在同一個系統(tǒng)中安裝多個版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎么處理。Go源碼安裝在Go的源代碼中,有些部分是用Plan9C和ATT匯編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。在Mac系統(tǒng)中,只要你安裝了Xcode,就已經(jīng)包含了相應(yīng)的編譯工具。在類Unix系統(tǒng)中,需要安裝gcc等工具。例如Ubuntu系統(tǒng)可通過在終端中執(zhí)行sudoapt-getinstallgcclibc6-dev來安裝編譯工具。在Windows系統(tǒng)中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設(shè)置相應(yīng)的環(huán)境變量。你可以直接去官網(wǎng)下載源碼,找相應(yīng)的goVERSION.src.tar.gz的文件下載,下載之后解壓縮到$HOME目錄,執(zhí)行如下代碼:cdgo/src./all.bash運行all.bash后出現(xiàn)"ALLTESTSPASSED"字樣時才算安裝成功。上面是Unix風(fēng)格的命令,Windows下的安裝方式類似,只不過是運行all.bat,調(diào)用的編譯器是MinGW的gcc。如果是Mac或者Unix用戶需要設(shè)置幾個環(huán)境變量,如果想重啟之后也能生效的話把下面的命令寫到.bashrc或者.zshrc里面,exportGOPATH=$HOME/gopathexportPATH=$PATH:$HOME/go/bin:$GOPATH/bin如果你是寫入文件的,記得執(zhí)行bash.bashrc或者bash.zshrc使得設(shè)置立馬生效。如果是window系統(tǒng),就需要設(shè)置環(huán)境變量,在path里面增加相應(yīng)的go所在的目錄,設(shè)置gopath變量。當(dāng)你設(shè)置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經(jīng)安裝成功圖1.1源碼安裝之后執(zhí)行Go命令的圖如果出現(xiàn)Go的Usage信息,那么說明Go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了Go的安裝目錄。關(guān)于上面的GOPATH將在下面小節(jié)詳細講解Go標(biāo)準(zhǔn)包安裝Go提供了每個平臺打好包的一鍵安裝,這些包默認會安裝到如下目錄:/usr/local/go(Windows系統(tǒng):c:\Go),當(dāng)然你可以改變他們的安裝位置,但是改變之后你必須在你的環(huán)境變量中設(shè)置如下信息:exportGOROOT=$HOME/goexportGOPATH=$HOME/gopathexportPATH=$PATH:$GOROOT/bin:$GOPATH/bin上面這些命令對于Mac和Unix用戶來說最好是寫入.bashrc或者.zshrc文件,對于windows用戶來說當(dāng)然是寫入環(huán)境變量。如何判斷自己的操作系統(tǒng)是32位還是64位?我們接下來的Go安裝需要判斷操作系統(tǒng)的位數(shù),所以這小節(jié)我們先確定自己的系統(tǒng)類型。Windows系統(tǒng)用戶請按Win+R運行cmd,輸入systeminfo后回車,稍等片刻,會出現(xiàn)一些系統(tǒng)信息。在“系統(tǒng)類型”一行中,若顯示“x64-basedPC”,即為64位系統(tǒng);若顯示“X86-basedPC”,則為32位系統(tǒng)。Mac系統(tǒng)用戶建議直接使用64位的,因為Go所支持的MacOSX版本已經(jīng)不支持純32位處理器了。Linux系統(tǒng)用戶可通過在Terminal中執(zhí)行命令arch(即uname-m)來查看系統(tǒng)信息:64位系統(tǒng)顯示x86_6432位系統(tǒng)顯示i386Mac安裝訪問下載地址,32位系統(tǒng)下載go1.4.2.darwin-386-osx10.8.pkg,64位系統(tǒng)下載go1.4.2.darwin-amd64-osx10.8.pkg,雙擊下載文件,一路默認安裝點擊下一步,這個時候go已經(jīng)安裝到你的系統(tǒng)中,默認已經(jīng)在PATH中增加了相應(yīng)的~/go/bin,這個時候打開終端,輸入go看到類似上面源碼安裝成功的圖片說明已經(jīng)安裝成功如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。Linux安裝訪問下載地址,32位系統(tǒng)下載go1.4.2.linux-386.tar.gz,64位系統(tǒng)下載go1.4.2.linux-amd64.tar.gz,假定你想要安裝Go的目錄為$GO_INSTALL_DIR,后面替換為相應(yīng)的目錄路徑。解壓縮tar.gz包到安裝目錄下:tarzxvfgo1.4.2.linux-amd64.tar.gz-C$GO_INSTALL_DIR。設(shè)置PATH,exportPATH=$PATH:$GO_INSTALL_DIR/go/bin然后執(zhí)行g(shù)o圖1.2Linux系統(tǒng)下安裝成功之后執(zhí)行g(shù)o顯示的信息如果出現(xiàn)go的Usage信息,那么說明go已經(jīng)安裝成功了;如果出現(xiàn)該命令不存在,那么可以檢查一下自己的PATH環(huán)境變中是否包含了go的安裝目錄。Windows安裝訪問GoogleCode下載頁,32位請選擇名稱中包含windows-386的msi安裝包,64位請選擇名稱中包含windows-amd64的。下載好后運行,不要修改默認安裝目錄C:\Go\,若安裝到其他位置會導(dǎo)致不能執(zhí)行自己所編寫的Go代碼。安裝完成后默認會在環(huán)境變量Path后添加Go安裝目錄下的bin目錄C:\Go\bin\,并添加環(huán)境變量GOROOT,值為Go安裝根目錄C:\Go\。驗證是否安裝成功在運行中輸入cmd打開命令行工具,在提示符下輸入go,檢查是否能看到Usage信息。輸入cd%GOROOT%,看是否能進入Go安裝目錄。若都成功,說明安裝成功。不能的話請檢查上述環(huán)境變量Path和GOROOT的值。若不存在請卸載后重新安裝,存在請重啟計算機后重試以上步驟。第三方工具安裝GVMgvm是第三方開發(fā)的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當(dāng)?shù)姆奖?,安裝gvm使用如下命令:bash(curl-s-S-L)安裝完成后我們就可以安裝go了:gvminstallgo1.4.2gvmusego1.4.2也可以使用下面的命令,省去每次調(diào)用gvmuse的麻煩:gvmusego1.4.2--default執(zhí)行完上面的命令之后GOPATH、GOROOT等環(huán)境變量會自動設(shè)置好,這樣就可以直接使用了。apt-getUbuntu是目前使用最多的Linux桌面系統(tǒng),使用apt-get命令來管理軟件包,我們可以通過下面的命令來安裝Go,為了以后方便,應(yīng)該把gitmercurial也安裝上:sudoapt-getinstallpython-software-propertiessudoadd-apt-repositoryppa:gophers/gosudoapt-getupdatesudoapt-getinstallgolang-stablegit-coremercurialhomebrewhomebrew是Mac系統(tǒng)下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應(yīng)該把gitmercurial也安裝上:brewupdatebrewupgradebrewinstallgobrewinstallgitbrewinstallmercurial
如何編譯arm linux的go
Golang也就是Go語言,現(xiàn)在已經(jīng)發(fā)行到1.4.1版本了,語言特性優(yōu)越性和背后Google強大靠山什么的就不多說了。Golang的官方提供了多個平臺上的二進制安裝包,遺憾的是并非沒有發(fā)布ARM平臺的二進制安裝包。ARM平臺沒辦法直接從官網(wǎng)下載二進制安裝包來安裝,好在Golang是支持多平臺并且開源的語言,因此可以通過直接在ARM平臺上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設(shè)置Golang編譯環(huán)境變量、編譯、配置Golang行環(huán)境變量等步驟。
注:本文選用樹莓派做測試,因為樹莓派是基于ARM平臺的。
1、編譯工具配置
據(jù)說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:
1.1 在Ubuntu或Debian平臺上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統(tǒng)是基于Debian修改的,所以可以使用這種方法安裝。
1.2 在RedHat或CentOS 6平臺上可以使用sudo yum install gcc libc-devel命令安裝。
安裝完成后可以輸入 gcc --version命令驗證是否成功安裝。
2、獲取golang源代碼
2.1 直接從官網(wǎng)下載源代碼壓縮包。
golang官網(wǎng)提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:
2.2 使用git工具獲取。
golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以后可以隨時獲取最新的golang源代碼。
2.2.1 首先確認ARM平臺上已經(jīng)安裝了git工具,可以使用git --version命令確認。一般linux平臺都安裝了git,沒有的話可以自行安裝,不同平臺的安裝方法可以參考:
2.2.2 克隆遠程golang的git倉庫到本地
在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然后以下命令獲取代碼倉庫:
git clone
大陸地區(qū)可能會獲取失敗,在不翻墻的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經(jīng)將golang也托管到github上面,所以也可以通過下面命令獲取:
git clone
視網(wǎng)絡(luò)情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =
下載完成后,可以看到目錄下多了一個go目錄,里面即為golang的源代碼,在終端上執(zhí)行cd go命令進入該目錄。
執(zhí)行下面命令檢出go1.4.1版本的源代碼,因為現(xiàn)在已經(jīng)有新的代碼提交上去了,最新的代碼可能不是最穩(wěn)定的:
git checkout go1.4.1
至此,最新1.4.1發(fā)行版的源代碼獲取完畢
3、設(shè)置golang的編譯環(huán)境變量
主要有GOROOT、GOOS、GOARCH、GOARM四個環(huán)境變量需要設(shè)置,先解釋四個環(huán)境變量的意義。
3.1 GOROOT
主要代表golang樹結(jié)構(gòu)目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設(shè)置這個環(huán)境變量,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設(shè)置為go目錄的路徑。
3.2 GOOS和GOARCH
分別代表編譯的目標(biāo)系統(tǒng)和平臺,可選值如下:
GOOS GOARCH
darwin 386
darwin amd64
dragonfly 386
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
需要注意的是這兩個值代表的是目標(biāo)系統(tǒng)和平臺,而不是編譯源代碼的系統(tǒng)和平臺。樹莓派的RaspBian是linux系統(tǒng),所以這些GOOS設(shè)置為linux,GOARCH設(shè)置為arm。
3.3 GOARM
表示使用的浮點運算協(xié)處理器版本號,只對arm平臺有用,可選值有5,6,7。如果是在目標(biāo)平臺上編譯源代碼,這個值可以不設(shè)置,它會自動判斷需要使用哪一個版本。
總結(jié)下來,在樹莓派上設(shè)置golang的編譯環(huán)境變量,可編輯$HOME/.bashrc文件,在末尾添加下面內(nèi)容:
export GOROOT=你的go目錄路徑
export GOOS=linux
export GOARCH=arm
編輯完后保存,執(zhí)行source ~/.bashrc命令讓修改生效。
4、編譯源代碼
環(huán)境變量配置完成自后就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用于window平臺)。編譯實際上就是執(zhí)行其中一個腳本,兩者的區(qū)別在于all.bash在編譯完成后還會執(zhí)行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執(zhí)行./all.bash或者./make.bash命令即可開始編譯。由于硬件情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成后執(zhí)行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。
5、配置golang運行環(huán)境變量
編譯完成后,go目錄下會生成bin目錄,里面就是go的運行腳本。為了以后使用方法,可以將這個bin路徑添加到PATH環(huán)境變量中。同樣編輯~/.bashrc文件,因為前面設(shè)置過GOROOT環(huán)境變量指向go目錄了,所以只需要在末尾加上
export PATH=$PATH:$GOROOT/bin
保存后同樣執(zhí)行source ~/.bashrc命令讓環(huán)境變量生效。
至此,golang源代碼編譯安裝成功。執(zhí)行g(shù)o version應(yīng)該就能看到當(dāng)前golang的版本信息,表示編譯安裝成功。
go語言web框架beego安裝(go mod方式)
go語言web框架beego安裝(go mod方式)_不忘初心,方得始終-CSDN博客
重要:將bee命令放到GOROOT/bin目錄下,這步很關(guān)鍵
cp bee /usr/local/go/bin/
注:或者可以將GOPATH/bin設(shè)置為環(huán)境變量
echo ’export PATH=" PATH"' ~/.bashrc
source ~/.bashrc
router路由下方法名要大寫,訪問權(quán)限
wq保存
生效環(huán)境變量: source /etc/profile
go build -o abc.exe可指定編譯后的文件名
Golang常用環(huán)境變量說明與設(shè)置詳解
環(huán)境變量GOBIN表示我們開發(fā)程序編譯后二進制命令的安裝目錄。
當(dāng)我們使用go install命令編譯和打包應(yīng)用程序時,該命令會將編譯后二進制程序打包GOBIN目錄,一般我們將GOBIN設(shè)置為GOPATH/bin目錄。
export GOBIN=$GOPATH/bin
Go get包管理mod
windows下默認項目路徑在go安裝目錄的src下(beego)
新聞標(biāo)題:go語言源碼編譯安裝,go語言安裝包
文章網(wǎng)址:http://www.dlmjj.cn/article/hoeddi.html