网站设计的技巧,2021年4月重大新闻事件摘抄,wordpress 媒体库图片,做线下极限运动的网站golang笔记17--编译调试go源码 前置条件编译源码在 fmt 包中加自定义函数说明 当前go语言越来越流行了#xff0c;各大厂商都有加大go工程师的需求#xff0c;作为go语言的学习者#xff0c;我们除了要了解如何使用go语言外#xff0c;也有必要了解一下如何编译、调试go源码… golang笔记17--编译调试go源码 前置条件编译源码在 fmt 包中加自定义函数说明 当前go语言越来越流行了各大厂商都有加大go工程师的需求作为go语言的学习者我们除了要了解如何使用go语言外也有必要了解一下如何编译、调试go源码。 本文基于Ubuntu22.04系统和较新的go1.20.7, 让大家能够快速知道如何编译、调试go源码。
前置条件
确保安装go并配置好环境变量$ go version
go version go1.20.7 linux/amd64安装好gcc ubuntu 系统直接使用apt即可apt install gcc在src同目录新建 VERSION 文件内容为当前go版本此处为1.20.7注意不要将src放在安装包目录以防覆盖了现有的go 二进制文件
编译源码
go env -w GOPROXYhttps://goproxy.cn,direct
cd src
go get golang.org/x/netlatest
go mod tidy
go mod vendor
bash make.bash
输出
Building Go cmd/dist using /home/xg/soft/go1.20.7/go. (go1.20.7 linux/amd64)
Building Go toolchain1 using /home/xg/soft/go1.20.7/go.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for linux/amd64.
---
Installed Go for linux/amd64 in /home/xg/soft/go1.20.7/go-dev
Installed commands in /home/xg/soft/go1.20.7/go-dev/bin编译后生产的文件如下(多了bin和pkg文件夹)
xgxg:~/soft/go1.20.7/go-dev$ ls
bin pkg src VERSION在 fmt 包中加自定义函数
在 fmt.print.go 中新增 PrintlnXG 函数如下
func PrintlnXG(a ...any) (n int, err error) {Fprintln(os.Stdout, hello PrintlnXG, add by xg)return Fprintln(os.Stdout, a...)
}重新编译生成 bin/go 二进制文件 重新写一个hello.go 函数, 调用自定义的 fmt.PrintlnXG 函数, 如下所示:
package mainimport fmtfunc main() {fmt.Println(test self define function!)fmt.PrintlnXG(hello xgs function)
}执行后成功输出 hello PrintlnXG, add by xg 了如下图
说明
测试系统 ubuntu22.04 Desktopgo1.20.7