go1.20及以后版本编译标准库为静态库文件
Golang1.20及以后版本编译标准库为静态库文件
问题发现
- 在使用
go tool compile -S main.go
查看汇编代码时, 提示 main.go:3:8: could not import fmt (file not found) - 网络搜索, 发现Go1.20时为了缩小发行包, 不会将预编译的标准库静态文件放到下载Go时的归档文件中
- 标准库的包在需要时构建并缓存
解决办法
export GODEBUG=installgoroot=all && go install -v std
- 会在
$GOROOT/pkg/$GOOS_$GOARCH
下生成标准库各个库的.a文件 - 运行
go tool compile -S main.go
正常执行