




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第修改并编译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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工程项目管理当年热点试题及答案
- 2025调动合同样本
- 工程经济市场分析模型试题及答案
- 2025年工程经济企业治理结构试题及答案
- 2025国际服务贸易中英文合同
- 2025年农药采购合同范本
- 2025建筑工程项目合同范本
- 2025年工程项目管理考试的出题趋势及试题及答案
- 2025简易合同租赁协议范本
- 2025年市政工程成本控制试题及答案
- 2024年陪诊师考试普及试题及答案
- 危险性较大的分部分项工程专项施工方案严重缺陷清单(试行)
- 湿地生态修复与保护设计方案
- 4.2依法履行义务 教案 2024-2025学年统编版道德与法治八年级下册
- 二元一次方程组讲义
- 2025江苏苏州狮山商务创新发展集团有限公司及下属板块公司招聘10人笔试参考题库附带答案详解
- “输出轴”零件的机械加工工艺及其钻端面φ20孔工艺装备说明书
- 《小型智能灭火机器人的设计》11000字(论文)
- 能源管理系统用户操作手册
- 宝洁波士顿矩阵案例分析课件
- 《13洁净的水域》教学设计-2023-2024学年科学六年级下册苏教版
评论
0/150
提交评论