go源码编译
Contents
学习go的源码编译
下载源码仓库
git clone git@github.com:golang/go.git
我选择了其中一个分支 release-branch.go1.18
git checkout release-branch.go1.18
目录结构
$ tree -d -L 2
.
├── api
├── bin
├── doc
├── lib
│ └── time
├── misc
│ ├── android
│ ├── arm
│ ├── cgo
│ ├── chrome
│ ├── ios
│ ├── linkcheck
│ ├── reboot
│ ├── swig
│ ├── trace
│ └── wasm
├── pkg
│ ├── darwin_arm64
│ ├── include
│ ├── obj
│ └── tool
├── src
│ ├── archive
│ ├── bufio
│ ├── builtin
│ ├── bytes
│ ├── cmd
│ ├── compress
│ ├── container
│ ├── context
│ ├── crypto
│ ├── database
│ ├── debug
│ ├── embed
│ ├── encoding
│ ├── errors
│ ├── expvar
│ ├── flag
│ ├── fmt
│ ├── go
│ ├── hash
│ ├── html
│ ├── image
│ ├── index
│ ├── internal
│ ├── io
│ ├── log
│ ├── math
│ ├── mime
│ ├── net
│ ├── os
│ ├── path
│ ├── plugin
│ ├── reflect
│ ├── regexp
│ ├── runtime
│ ├── sort
│ ├── strconv
│ ├── strings
│ ├── sync
│ ├── syscall
│ ├── testdata
│ ├── testing
│ ├── text
│ ├── time
│ ├── unicode
│ ├── unsafe
│ └── vendor
└── test
├── abi
├── alias3.dir
├── asmhdr.dir
├── bench
├── chan
├── closure3.dir
├── closure5.dir
├── codegen
├── ddd2.dir
├── dwarf
├── fixedbugs
├── import2.dir
├── import4.dir
├── interface
├── intrinsic.dir
├── ken
├── linkname.dir
├── method4.dir
├── oldescape_linkname.dir
├── retjmp.dir
├── runtime
├── stress
├── syntax
├── typeparam
└── uintptrescapes.dir
94 directories
假设我要编译src/cmd/trace
这个pkg
#进入目录
cd src/cmd/trace
# run下
go run ./...
此时是编译失败的,在项目根目录
执行./src/make.bash
脚本,
将会在./bin
目录生成调试源码用的编译器,
再将GOROOT
变量指向项目根目录
,此时再编译就正常了