gcc编译.c文件成为一个可执行程序需要经过四个过程
预处理 编译 汇编 链接
那么gcc是如何完成这些操作的呢?
?格式 :gcc -[选项] 要编译的文件 -[选项] 要生成的目标文件
每个过程都干了什么事?
test.c文件通过编译成为可执行程序test.exe
预处理(进行宏替换)
gcc -E test.c -o test.i (只预处理生成一个test.i文件)
1.预处理功能主要包括:宏替换,展开头文件,条件编译,去注释等。
2.预处理指令是以#开头的代码行。
3.-E:让gcc在与处理结束后停止编译过程。
4.-o:指目标文件test.i已经过预处理的C原始程序。
编译(生成汇编)
gcc -S test.i -o test.s (只走到编译阶段生成test.s文件)
1.在这个阶段中,gcc首先要检查代码的规范性,是否有语法错误等。以确定代码要做的功工作,在
检查无误后,gcc把代码翻译成汇编语言。
-S:只进行编译,不进行汇编,生成汇编代码。
汇编 (生成机器可识别代码)
gcc -c test.s -o test.o (test.o计算机已经可以识别但还不可以执行)
把编译阶段生成的.s文件转换为目标文件。
-c:看到汇编代码以转化为.o的二进制目标代码
链接(生成可执行文件或库文件)
gcc test.o -o test.exe 生成最终的exe可执行程序
在成功编译后就进入链接阶段。