- 预处理:(1)将宏定义展开;(2)将头文件插入;(3)处理条件预编译指令;(4)删除注释;(5)添加行号;(6)保留#pragma 编译器指令;
- 编译:(1)词法分析(2)语法分析(3)语义分析(4)源代码优化
- 汇编:转换为汇编语言
- 链接:未解决符号重定位
- 静态链接:编译时完成;需要的函数被复制到相关位置;利用ar cr libxxx.a xx.o命令生成;
- 动态链接:程序运行时重定位;g++ -fPIC(位置无关) -shared libXXX.so XXX.o命令生成;
- 静态链接执行速度快,但是动态链接占用内存少,更有利于共享内存;
- 程序升级问题:静态链接改动就得重新编译,动态链接接口不变就不需要改动;