【Linux】gcc编译过程

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可执行程序
       在成功编译后就进入链接阶段。

猜你喜欢

转载自blog.csdn.net/hgelin/article/details/82257940