老年人编程系列-go的编译顺序

简介: 根据官方文档https://golang.org/doc/install/source编译go源码需要$ cd src$ ./all.bash拨拉开src/all.bash文件可以看到如下步骤加载make.

根据官方文档https://golang.org/doc/install/source
编译go源码需要
$ cd src
$ ./all.bash

拨拉开src/all.bash文件可以看到如下步骤

  1. 加载make.bash的内容
  2. 执行run.bash
  3. 执行dist banner命令

make.bash编译/cmd/dist,
run.bash使用dist编译exec go tool dist test -rebuild "$@"
非常神奇的是,对于1.5之前的版本,dist是用C写的,编译的顺序

  1. gcc编译dist,
  2. dist编译go
    但是在1.5之后的版本,dist也是用GO写的,所以编译的顺序是
  3. gcc编译dist
  4. dist编译工具链
  5. dist重编自己
  6. dist编译go
  7. go编译其他包和命令
相关文章
|
9月前
|
设计模式 缓存 算法
Go如何进行高质量编程与性能调优实践
本文介绍了Go语言高质量编程与性能调优的实践方法。高质量编程包括良好的编码习惯(如清晰注释、命名规范)、代码风格与设计(如MVC模式)、简洁明了的代码原则,以及单元测试与代码重构的重要性。性能调优方面,涵盖算法优化、数据结构选择、I/O优化、内存管理、并行与并发处理优化及代码层面的改进。通过这些方法,可有效提升代码质量和系统性能。
187 13
|
9月前
|
分布式计算 Go C++
初探Go语言RPC编程手法
总的来说,Go语言的RPC编程是一种强大的工具,让分布式计算变得简单如同本地计算。如果你还没有试过,不妨挑战一下这个新的编程领域,你可能会发现新的世界。
222 10
|
监控 Java Go
编译时插桩,Go应用监控的最佳选择
本文讲解了阿里云编译器团队和可观测团队为了实现Go应用监控选择编译时插桩的原因,同时还介绍了其他的监控方案以及它们的优缺点。
1090 113
|
数据采集 监控 Java
go语言编程学习
【11月更文挑战第3天】
260 7
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
235 1
|
Unix Linux Go
go进阶编程:Golang中的文件与文件夹操作指南
本文详细介绍了Golang中文件与文件夹的基本操作,包括读取、写入、创建、删除和遍历等。通过示例代码展示了如何使用`os`和`io/ioutil`包进行文件操作,并强调了错误处理、权限控制和路径问题的重要性。适合初学者和有经验的开发者参考。
257 4
|
编译器 Go
go语言编译选项
【10月更文挑战第17天】
314 5
|
Java 大数据 Go
Go语言:高效并发的编程新星
【10月更文挑战第21】Go语言:高效并发的编程新星
479 7
go语言编译时常量表达式
【10月更文挑战第20天】
175 3