go 源码编译流程

Go 源码编译流程 Go 编译源代码需要经过编译,链接过程。通过以下示例看 Go (Go 版本为 v1.24.1)语言是如何编译源码的。 首先,代码目录结构如下: 1➜ demo1 git:(main) ✗ tree ./ 2./ 3├── cmd 4│ └── app1 5│ └── main.go 6└── pkg 7 └── pkg1 8 └── pkg1.go 9 10// main.go 11package main 12 13import "github.com/TroyXia/effective-go-book/chapter3/demo1/pkg/pkg1" 14 15func main() { 16 pkg1.Func1() 17} 18 19// pkg1.go 20package pkg1 21 22import "fmt" 23 24func Func1() { 25 fmt.Println("pkg1.Func1 invoked") 26} 编译 app1 main.go 为可执行文件: ...

2025-07-27 · xhy

Go runtime 调度器精讲(十一):总览全局

前言 前面用了十讲介绍了 Go runtime 调度器,这一讲结合一些图在总览下 Go runtime 调度器。 状态转换图 首先是 Goroutine 的状态转换图: 大部分转移路径前面几讲也介绍过,这里就不继续介绍了(下同)。 ...

2024-09-17 · xhy

Go runtime 调度器精讲(十):异步抢占

前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占。本讲会介绍基于信号的真抢占式调度。 在介绍真抢占式调度之前看下 Go 的两种抢占式调度器: ...

2024-09-16 · xhy