预处理:处理源代码中#开头的预编译指令,规则如下:
1、"#define"删除并展开对应宏定义。
2、处理所有的条件预编译指令。如#if/#ifdef/#else/#endif。
3、"#include/#import"包含的文件递归插入到此处。
4、删除所有的注释"//或/**/"。
5、添加行号和文件名标识。如“# 1 "main.m"”,编译调试会用到。
.s文件:汇编语言源程序
.o文件:包含了各个函数的入口标记,一个.c或.cpp文件对应一个.o文件,通过链接器,把多个.o文件和库链接成可执行文件,例如.exe、.elf、.axf等等
.a文件:static mode,和windows的lib差不多,多个.o文件合在一起的静态链接,即静态库
.so文件:shared object,和windows的dll差不多,使用时候才载入,多个进程可同时共享,不需要额外开辟内存,这点和静态库相反