0%

Golang源码学习1 源码编译

前些天在工作中用Go写出了一个内存泄露的bug,原因是没有认真阅读文档,使用姿势不对。根据官方文档纠正使用姿势后,解决掉了这个bug。但是,对于为什么会内存泄露我还不是很明白,于是打算对源码研究一番,就有了这篇博文。

我的电脑操作系统是Linux,之前安装Go的方式是根据官网教程下载的二进制,在$GOROOT有编译好的二进制文件,也有源代码。通常在写项目代码时,会跳转标准库的函数说明,就是跳转到这里的源代码。这里的源代码用来参考还好,但是不适合折腾。我选择了从github拷贝最新的源代码来阅读。一是不会影响正常项目的编译,二是能拉取到最新的源代码,三是可以看到整个项目各个大佬的commit。

下载源代码,直接git clone即可。

下载了源代码后,开始尝试阅读源码。发现一个问题,IDE会对一些Go标准库的函数标红,提示没有这个函数的引用。经过查看commit,发现这个函数是新增加的,而自己IDE使用的sdk还是老旧的、之前下载的二进制文件。为了让GoLand认识这些新函数,需要使用这份新的源码编译。

对源码的编译。我参考了Installing Go from source,这里不再赘述。

学习Golang的源码,就是跟顶尖程序员学习编程,是一件蛮有意义的事情。后面会写一些Golang源码学习相关的博文。

(全文完)