编译自制go源代码

1,691 阅读1分钟

看了一篇文章改go源码重新编译, 虽然工作中没使用到但是好奇试下, 下面是最简单的修改 fmt 包的 Println 函数为例进行了修改, 点击阅读原文可以看到参考资料, 一起撸起来~

1.下载源代码

项目地址: github.com/golang/go

git clone方式太慢, 这里推荐一个加速的地址 (地址: github.zhlh6.cn/)

转换后直接使用下方地址 clone 即可 image.png

速度变得快了一点吧~😅 image.png

2.修改后编译源代码

下载源代码后, 修改代码

func Println(a ...interface{}) (n int, err error) {
    println("hello 小宇")
    return Fprintln(os.Stdout, a...)
}

进入编译

./src/make.bash

如果遇到 make.bash must be run from $GOROOT/src, 则需要修改 GOROOT 指向项目源码目录即可, 再进入到src目录执行 make.bash. 编译成功后则在src目录下生成bin目录

查看新编译 go 执行文件 image.png

3. 测试

调用 Println

package main
import "fmt"

func main(){
   fmt.Println("123")
}

编译go源码

./bin/go run main.go 

注意这里 go 命令必须是我们刚编译成功的执行文件 output:

hello 小宇
123