转自 GoLang之Go 编译链接过程概述(3)_GoGo在努力的博客-CSDN博客_golang编译过程
仅做个人备份,浏览请看原文
程序运行前,需要编译和链接两个过程。
编译
编译过程就是对源文件进行词法分析、语法分析、语义分析、优化,最后生成汇编代码文件,以 .s
作为文件后缀。之后,汇编器会将汇编代码转变成机器可以执行的指令。由于每一条汇编语句几乎都与一条机器指令相对应,所以只是一个简单的一一对应,比较简单,没有语法、语义分析,也没有优化这些步骤。
链接
编译过程是针对单个文件进行的,文件与文件之间不可避免地要引用定义在其他模块的全局变量或者函数,这些变量或函数的地址只有在此阶段才能确定。链接过程就是要把编译器生成的一个个目标文件链接成可执行文件。