一、编译过程
1、预处理:头文件展开、宏定义展开、条件编译、删除注释(此过程不检查语法)
头文件的展开:带#号的指令为预处理指令,如:#include<stdio.h>,预处理时会将头文件stdio.h拷贝到预处理文件中。
宏定义展开:#define PI 3.1415926 代表申明一个宏 “PI“,值为3.1515926,预处理时,用值替代代码中的宏
条件编译:# if 条件
代码块
#endif
当条件不成立时删除相应代码块
删除注释:预处理时删除“//”和“/* */”注释的所有内容。
gcc -E hello.c -o hello.i *预编译为.i为后缀的预处理文件
2、编译:将预处理文件编译为汇编文件,此过程会检查语法错误;
gcc -S hello.c -o hello.s *编译为.s为后缀的汇编文件
3、汇编:将汇编文件编译生成二进制文件
gcc -C hello.i -o hello.o *汇编为.o为后缀的二进制文件文件
4、链接:设置运行环境,链接其他库。生成.exe文件
gcc hello.o -o hello.exe *链接