编译链接过程:
预编译:处理宏定义,注释,#include等
编译:将.c .s文件编译为机器码.o文件
链接:将.o文件中的各函数(段)按一定规则(链接脚本指定)累积在一起,形成可执行文件
strip:把可执行程序中的符号信息去掉,节省空间(Debug版和Release版)
objcopy:可执行程序生成可烧录的镜像bin文件
程序段:代码段、数据段、bss段(ZI段)、自定义段
段是程序的一部分,给段命名为了在链接脚本中用段名来核实位置
段名有两种:一种先天性,编译器内部定好的,另一种后天性,由程序员自定义
先天性段名:
代码段:(.text),又叫wenb文本段,就是编译器将函数编译生成的东西
数据段:(.data)数据段就是c语言有显示初始化为非0的全局变量
bss段:又叫ZI(zero initial)段,就是零初始化段,对应C语言中初始化为0的全局变量
后天性段名:
段名,段属性和特征都由程决定
链接脚本:本质是一个规则文件,指挥链接器工作,连接器会按照链接脚本中的规则来处理.o文件中的段,将其链接成一个可执行程序。