golang 源码编译

472 阅读1分钟

想要更好的了解golang,阅读golang源码是必不可少的。首先需要从源码编译golang,便于我们调试开发。

获取源码

可以从官网下载源码,如下载go1.18.src.tar.gz

安装编译工具

golang1.5以后的版本需要使用golang1.4进行编译安装,golang1.4及以前的版本可以使用gcc进行编译安装。

可以在官网选择一个版本作为编译工具。

linux可以选择go1.4.3.linux-amd64.tar.gz

windows可以选择go1.4.3.windows-amd64.msi

其中go1.4也可以从源码编译,但这里我使用编译好的版本,以下使用go1.4编译当前最新的go1.18。

设置环境变量

  • linux

    export CGO_ENABLED=0
    # 设置go1.4的目录位置
    export GOROOT_BOOTSTRAP=~/go1.4
    
  • windows

    set CGO_ENABLED=0
    set GOROOT_BOOTSTRAP=C:\dev\go1.4
    

编译

进入待编译源码的src目录下

  • linux执行./make.bash进行编译

  • windows执行all.bat进行编译

可能会出现一些test错误但是不影响实际使用。

验证

可以修改.\src\fmt\print.go文件中的Println函数,增加一行输出

func Println(a ...any) (n int, err error) {
	print("hello\n") // 增加该行
	return Fprintln(os.Stdout, a...)
}

调用修改后的fmt.Println函数,验证修改是否正确。