编译与链接
预编译:
1、删除所有#define,展开宏定义
2、处理所有条件预编译指令,#if,#ifdef,#elif,#endif等
3、处理#include预编译命令,将被包含的文件插入到该预编译指令的位置
4、删除所有注释,//,/**/
5、添加行号和文件名标志。便于编译时产生的错误定位
6、保留所有的#pragma编译器指令
编译:
把预处理完的文件进行一系列的词法分析,语义分析,语法分析及优化后生产相应的汇编代码文件
gcc -S hello.c -o hello.s
汇编:
将汇编代码转换成机器可以执行的指令
as hello.s -o hello.o
链接:
与一些库文件或相关的文件生成最终可执行文件
ld -static /usr/lib/crt1.o .......

浙公网安备 33010602011771号