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 正常执行
0%