一、程序环境和预处理
2种环境
翻译环境
将源代码转换成可执行的机器指令
执行环境
执行代码
编译 + 链接
源文件—编译器—目标文件 + 链接库—链接器—可执行文件
1. 编译
(1)预编译/预处理
gcc xx.c -E -o xx.i
头文件的包含#include
define定义符号的替换,删除定义的符号
注释的删除
(2)编译
gcc xx.i -s
生成了xx.s文件
把C代码转换成汇编代码
汇编代码
语法分析
词法分析
符号汇总
全局符号:g_val,Add,main
语义分析
(3)汇编
gcc xx.s -c
生成了xx.o文件
把汇编代码转换成二进制指令
形成符号表
2. 链接
合并段表
符号表合并和重定位