老年人编译系列-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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主