修改并编译golang源码的操作步骤_第1页
修改并编译golang源码的操作步骤_第2页
修改并编译golang源码的操作步骤_第3页
修改并编译golang源码的操作步骤_第4页
修改并编译golang源码的操作步骤_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第修改并编译golang源码的操作步骤最近为了做HyperledgerFabric国密改造,涉及到了golang源码的改动。特将操作过程整理如下,以供参考:

golang的源码安装其实比较简单,只需运行源码包中的脚本src/all.bash,等到出现类似以下字样就安装好了:

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来编译。

让我们开始操作吧!

为了方便修改调试,可以fork官方的仓库(/golang/go.git),然后拉取自己仓库中的代码,例如我的用户名是Mango

第一步、安装golang1.4

主要操作如下:

为了方便操作,我们切换到root用户

fabric@fabric-VirtualBox:~$suroot

为了方便统一管理,将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

需要关闭cgo支持,重新编译

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

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

最后,我们将编译好的go1.4复制到/usr/local下方便以后使用

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

这样你就能得到1.4版本的go了。

第二步、安装golang1.9

主要操作如下:

我们需要编译好的golang环境支持c语言的文件,所以需要开启cgo

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

我们需要指定由go1.4进行编译,所以得设置以下环境变量

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

这里就用到了前面复制得到的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复制到/usr/local下,作为默认的go

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论