修改并編譯golang源碼的操作步驟_第1頁
修改并編譯golang源碼的操作步驟_第2頁
修改并編譯golang源碼的操作步驟_第3頁
修改并編譯golang源碼的操作步驟_第4頁
修改并編譯golang源碼的操作步驟_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第修改并編譯golang源碼的操作步驟最近為了做HyperledgerFabric國密改造,涉及到了golang源碼的改動。特將操作過程整理如下,以供參考:

golang的源碼安裝其實比較簡單,只需運行源碼包中的腳本src/all.bash,等到出現(xiàn)類似以下字樣就安裝好了:

InstalledGoforlinux/amd64inxxx(目錄地址)

Installedcommandsinxxx(目錄地址)

但是在源碼安裝1.5版本以上的go時會報以下的錯誤:

cmd/dist

ERROR:Cannotfind/home/fabric/go1.4/bin/go.

Set$GOROOT_BOOTSTRAPtoaworkingGotree=Go1.4.

這是由于go1.5版以后的編譯安裝需要1.4版本go,所以如果想要通過源碼方式安裝高版本go,必須先安裝好1.4版本的go。

其實這里不限定使用go1.4版本,如果你需要得到1.10版本的golang,你也可以用1.9(1.10)版本的golang來編譯。

讓我們開始操作吧!

為了方便修改調(diào)試,可以fork官方的倉庫(/golang/go.git),然后拉取自己倉庫中的代碼,例如我的用戶名是Mango

第一步、安裝golang1.4

主要操作如下:

為了方便操作,我們切換到root用戶

fabric@fabric-VirtualBox:~$suroot

為了方便統(tǒng)一管理,將golang源碼放入GOPATH中

root@fabric:~#exportGOPATH=/opt/gopath

root@fabric:~#cd$GOPATH/src//Mango/

root@fabric:/opt/gopath/src//Mango#gitclone/Mango/go.git

Cloninginto'go'...

remote:Countingobjects:322777,done.

remote:Compressingobjects:100%(73/73),done.

remote:Total322777(delta32),reused54(delta28),pack-reused322675

Receivingobjects:100%(322777/322777),147.71MiB|3.49MiB/s,done.

Resolvingdeltas:100%(255582/255582),done.

友情提醒下,雖然可能有點啰嗦,但是Mango/go這個倉庫其實是不存在的,這里只是為了方便舉例子,大家可以自行從官方倉庫fork分支...

切換為go1.4分支

root@fabric:/opt/gopath/src//Mango#cdgo

root@fabric:/opt/gopath/src//Mango/go#gitcheckoutrelease-branch.go1.4

Branchrelease-branch.go1.4setuptotrackremotebranchrelease-branch.go1.4fromorigin.

Switchedtoanewbranch'release-branch.go1.4'

進入src目錄,并運行all.bash安裝腳本,稍等片刻即可安裝成功:

root@fabric:/opt/gopath/src//Mango/go#cdsrc

root@fabric:/opt/gopath/src//Mango/go/src#./make.bash

#BuildingCbootstraptool.

cmd/dist

#BuildingcompilersandGobootstraptoolforhost,linux/amd64.

lib9

libbio

liblink

cmd/cc

cmd/gc

cmd/6l

....

#CheckingAPIcompatibility.

Skippingcmd/apichecks

real0m0.538s

user0m0.310s

sys0m0.191s

ALLTESTSPASSED

InstalledGoforlinux/amd64in/root/software/go

Installedcommandsin/root/software/go/bin

***Youneedtoadd/root/software/go/bintoyourPATH.

如果遇到報錯

cannotloadDWARFoutputfrom$WORK/os/user/_obj//_cgo_.o:decodingdwarfsectioninfoatoffset0x4:unsupportedversion0

需要關(guān)閉cgo支持,重新編譯

root@fabric:/opt/gopath/src//Mango/go/src#exportCGO_ENABLED=0

root@fabric:/opt/gopath/src//Mango/go/src#./make.bash

最后,我們將編譯好的go1.4復(fù)制到/usr/local下方便以后使用

root@fabric:/opt/gopath/src//Mango/go/src#cp-rp../../go/usr/local/go1.4

這樣你就能得到1.4版本的go了。

第二步、安裝golang1.9

主要操作如下:

我們需要編譯好的golang環(huán)境支持c語言的文件,所以需要開啟cgo

root@fabric:/opt/gopath/src//Mango/go/src#exportCGO_ENABLED=1

我們需要指定由go1.4進行編譯,所以得設(shè)置以下環(huán)境變量

root@fabric:/opt/gopath/src//Mango/go/src#exportGOROOT_BOOTSTRAP=/usr/local/go1.4

這里就用到了前面復(fù)制得到的go1.4目錄

回到go源碼根目錄,并切換分支至1.9

root@fabric:/opt/gopath/src//Mango/go/src#cd../

root@fabric:/opt/gopath/src//Mango/go#gitcheckoutrelease-branch.go1.9

Branchrelease-branch.go1.9setuptotrackremotebranchrelease-branch.go1.9fromorigin.

Switchedtoanewbranch'release-branch.go1.9'

下面的過程就和編譯go1.4很類似,不再贅述

root@fabric:/opt/gopath/src//Mango/go#cdsrc

root@fabric:/opt/gopath/src//Mango/go#./make.bash

...

這里的make.bash在一些版本中,也可能是all.bash

最后將編譯好的go1.9復(fù)制到/usr/local下,作為默認(rèn)的go

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論