go编译过程

执行go build后,会作何操作呢?

  1. 下载依赖包
  2. 以package粒度,多核并行compile,生成各个.a文件, $WORK/b001/ 代表main package
  3. 单核link,将第二步生成的.a文件链接,生成最终的二进制文件

-v verbose,可以打印编译的包
-x 将编译过程输出,可以看到go会在 /tmp/ 目录新建临时路径,执行编译后cp编译超出到当前路径

gcflags 可以将参数传递个go tool compile,常用的是 gcflags 'all=-N -l' # -N表示no optimalize,禁止编译器优化;-l表示禁止内联,便于delve debug

编译的过程:

  1. 文本分析:输入是文本,进行字符串识别出各个含义
  2. 词法分析:产出语法树
  3. 语法分析
posted @ 2022-05-02 12:30  dancingwolves  阅读(105)  评论(0)    收藏  举报