老年人编译系列-go cmd/dist源码
dist是用来编译go语言的工具,而且dist本身是由go语言写的
所以可以用低版本的go编译dist, 再用dist编译高版本的go
/src/cmd/dist是go dist工具的代码目录
main.go中的main为入口函数
主要的流程为
- 检测操作系统
- 检测系统架构
- bginit() //启动一组后端运行的goroutine, 用于在后台运行go
- xinit() //初始化全局变量/状态
- xmain() //执行全局commands变量中存储的操作
- xexit() //资源检查/进程退出
查看usage()函数可知
func usage() { xprintf(`usage: go tool dist [command] Commands are: banner print installation banner bootstrap rebuild everything clean deletes all built files env [-p] print environment (-p: include $PATH) install [dir] install individual directory list [-json] list all supported platforms test [-h] run Go test(s) version print Go version All commands take -v flags to emit extra information. `) xexit(2) }
查看commands的定义
// commands records the available commands. var commands = map[string]func(){ "banner": cmdbanner, "bootstrap": cmdbootstrap, "clean": cmdclean, "env": cmdenv, "install": cmdinstall, "list": cmdlist, "test": cmdtest, "version": cmdversion, }
着重看cmdbootstrap流程
cmdbootstrap流程中
- 检查rebuildall, debug, nobanner三个参数
- setup() //初始化变量
- checkCC() //检查C++编译器
- bootstrapBuildTools() //编译bootstrap工具链,主要的目录都列在了bootstrapDirs变量中
- install("runtime")
- install("cmd/go")
- goInstall(goBootstrap, append([]string{"-i"}, toolchain...)...)
- goInstall(goBootstrap, append([]string{"-a", "-i"}, toolchain...)...)
- goInstall(goBootstrap, targets...)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【Redis&MongoDB 社区大群】往期直播内容合辑(持续更新)
为满足广大开发者对更多数据库产品的学习需求,我们特别新建了Redis&MongoDB社区交流群,邀请多位阿里数据库专家入驻,为广大云用户提供专业的技术分享及回答,定期在国内开展线下技术沙龙,专家技术直播,欢迎大家加入! Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品
- 下一篇
DTCC 2019 | 海量数据毫秒级分析的背后——《阿里超大规模实时数仓架构挑战与实践解析》
摘要:在DTCC 2019大会上,阿里云智能数据库产品事业部研究员林亮进行了题为《超大规模实时数仓架构挑战与实践解析》的分享,数据分析领域目前正在朝着在线化方向演进,数据业务在海量数据实时写入、高并发分析、稳定性、灵活性上挑战巨大。分析型数据库AnalyticDB是阿里巴巴自主研发的超大规模PB级实时数据仓库,本次演讲深入分析了AnalyticDB海量数据毫秒级分析背后的架构挑战以及工程实践。 阿里云智能数据库产品事业部研究员林亮(花名:意博) 专家简介:林亮(花名:意博),阿里云智能数据库产品事业部研究员,曾就职Google十多年,在超大规模SQL Engine和规模存储引擎上经验丰富。目前在负责阿里云PB级分析型数据库AnalyticDB架构工作。 直播回放 链接:https://yq.aliyun.com/live/1047 议题PP
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启