千家信息网

如何编译go及实现go get进度显示

发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,这篇文章主要介绍如何编译go及实现go get进度显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、首先附上编译完成能显示go get进度的Go包:centos7直接解压版
千家信息网最后更新 2024年09月25日如何编译go及实现go get进度显示

这篇文章主要介绍如何编译go及实现go get进度显示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、首先附上编译完成能显示go get进度的Go包:

centos7直接解压版go:http://pan.baidu.com/s/1mik3cI8

windows7直接解压版go:http://pan.baidu.com/s/1jIaxKEE

一、编译之前修改go get进度显示:

因为beego在github.com上的包有点大, 所以 go get github.com/leanote/leanote/app 会很慢, 这个会执行几分钟或更长, 不知道的朋友还以为卡死了. 找了下 go get 没有一个选项可以输出进度的, 于是决定修改golang源码(别以为很有技术含量, 还不是go代码?).

看了下golang的源码 src/cmd/go 下是go命令的源码, 其中, get.go是go get命令的代码, build.go 是go build的代码.

刚开始走了点弯路, 想着改变get.go来显示进度, 无果之后想了下, go get 其实就是调用git , hg, svn的命令从仓库中下载的, 由此思路找到vcs.go(vcs全称为version control system), 果然这里面包含了调用git, hg, svn的命令. 问题迎刃而解:

  1. 修改git clone命令, 添加 --progress选项, 使其输出进度

  2. 修改cmd.Run()执行的地方, 使其将输出定位到标准输出流上

1. 修改git clone命令, 找到如下代码, 在createdCmd修改为 clone --progress {repo} {dir}

其它命令hg, svn...添加进度方法类似

// vcsGit describes how to use Git.var vcsGit = &vcsCmd{        name: "Git",        cmd:  "git",        createCmd:   "clone {repo} {dir}", // 此处修改为 clone --progress {repo} {dir}        downloadCmd: "pull --ff-only"}

2. 重定向输出流

找到run1()方法, 在 cmd.Stderr = &buf 下添加两行, 如:

var buf bytes.Buffer        cmd.Stdout = &buf        cmd.Stderr = &buf        cmd.Stdout = os.Stdout // 重定向标准输出        cmd.Stderr = os.Stderr // 重定向标准输出        err = cmd.Run()

Ok, 搞定, 接下来执行golang源码 src下的 all.bash 重新编译golang, 编译要些时间, 编译完后使用go get 试试:

看到进度条就不用担心了吧.

之前修改golang源码使其关闭变量未使用, 包未使用的错误 :

关闭golang的 variable declared but not used 和 package imported but not used

二:window7下面编译Go:

复制一份go源码:

设置GOROOT_BOOTSTRAP=C:\Go1.7

环境变量设置完毕需要重启生效!!!

下载安装:MinGW - Minimalist GNU for Windows

https://sourceforge.net/projects/mingw/

也可以直接下载TDM-GCC MinGW Compiler

添加到path中:

set PATH=.;C:\TDM-GCC-64\bin\

三:Centos7下面编译Go:

linux同理,执行编译脚本为src下的sh all.bash

编译完毕,执行go get:

以上是"如何编译go及实现go get进度显示"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

编译 进度 命令 输出 源码 代码 标准 内容 变量 方法 篇文章 迎刃而解 接下来 不用 仓库 价值 全称 兴趣 含量 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖州银行软件开发薪酬待遇 苏州盖世网络技术有限公司 业务方案在数据库实现 网络安全 试卷5 60数据库保险丝 创造与魔法303服务器的主播 网络安全公司干嘛 四川网络安全公司排名 方舟服务器怎么观察别人视角 山西程序软件开发服务介绍 客户端与软件开发 唐山网络安全预算 网络安全活动周是什么时间 日照移动城管软件开发电话 根据api文档建立数据库 松江区企业数据库研发以客为尊 萤石云无法连接服务器 松江区正规数据库系统费用是多少 腾讯个人信息服务器在哪里 新我的世界服务器招人 兴化直销网络技术解决方案 曙光服务器安装系统 北京捷诚通达网络技术 新乡市青柠网络技术有限公司 jmeter测数据库 嵌入式软件开发流程文档 校园网络安全管理人员职责 数据库表格没有主键怎么办 数据库建立索引和视图实验总结 mysql服务器配置参考
0