Linux-gcc编译器

gcc编译

写好的代码如何变成一个可执行程序的呢?
总共分四步:
预处理—-编译—-汇编—-链接
每一步如何实现:

  • 预处理:gcc -E test.c -o test.i
  • 编译:gcc -S test.c -o test.s
  • 汇编:gcc -c test.c -o test.o

这里:我们可以通过file命令查看得到test.i,test.s,test.o三个文件的类型。

这里写图片描述
这里写图片描述
- .i文件是c文本文件
- .s文件是汇编文本文件
- .o文件是可重定位文件
- a.out文件是可执行文件

通过命令:gcc -v test.c可以查看.c文件编译链接的过程
这里写图片描述
在这里我们可以得到:

  • cc1:编译器
  • as:汇编器
  • collect2:链接器
    这里的cc1编译器实际上就是用来编译代码的编译器,而gcc相当于一个外壳,实际起作用的是cc1.

选项

  • -E 仅作预处理,不进行编译、汇编和链接。
  • -S 仅编译到汇编语言,不进行汇编和链接。
  • -c 编译、汇编到目标代码,不进行链接
  • -o文件输出到文件
  • -g生成调试信息
  • -O0
  • -O1
  • -O3:优化级别
  • -w不生成任何警告
  • -Wall生成所有警告