1.通常所说的编译的任务
将高级语言代码转换为可执行文件
2.编译过程的四个阶段
预处理、编译、汇编、链接
(1) 预处理
展开头文件,进行宏替换,删除注释,
添加行号和文件名标识,保留所有的#pragma编译器指令,
处理所有的预编译指令(如#if、#ifdef、#elif、#else、#endif)
(2) 编译
将预处理后的文件经过词法分析、语法分析、语义分析、代码优化后转换为汇编代码文件
(3) 汇编
将汇编代码解释为二进制的机器指令
(4) 链接
把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确地衔接;
3.Linux下程序的编译过程
gcc(C语言编译器)对应的Linux指令
-E:只进行预处理
-S:只进行编译处理
-c:只进行汇编处理
-o:指定输出文件名称
在linux下执行一段C代码,可以将这四个步骤依次进行,
各阶段的指令如下:
预处理:gcc -E test.c -o test.i
编译:gcc -S test.i -o test.s
汇编:gcc -c test.s -o test.o
链接:gcc test.o -o test.exe
运行:./test.exe