gcc编译器用法(自学总结)

GCC仅仅意味着GNU C Compiler。

gcc工作四个步骤:预处理,编译,汇编,连接。

1.预处理:

   编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看。
   用法:#gcc -E hello.c -o hello.i

2.编译:

   在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。用户可以使用”-S”选项来进行      查看,该选项只进行编译而不进行汇编,生成汇编代码。
选项 -S
  用法: gcc –S hello.i –o hello.s
  作用:将预处理输出文件hello.i汇编成hello.s文件。

3.汇编:

  这个阶段是把编译阶段生成的”.s”文件转成二进制目标代码.
选项 -c
用法: gcc –c hello.s –o hello.o
作用:将汇编输出文件test.s编译输出test.o文件。

4.链接:

  这个阶段实际就是链接地址,比如去动态库找被调用的函数。

用法:gcc hello.o –o hello.exe
作用:将编译输出文件hello.o链接成最终可执行文件

【补充】

    arm-linux-gcc   -E      停留在预处理阶段

    arm-linux-gcc   -S      停留在编译阶段,这时候的输出文件是汇编语言。

    arm-linux-gcc    -c      停留在汇编阶段,这时候生成了二进制文件

    arm-linux-ld   -Ttest=0x xxxxxxxx   指定代码段的入口地址

    arm-linux-objcopy - I elf32-littlearm -O binary  xxx.bin   去头生成机器码

    arm-linux-objdum -h   反汇编

    arm-linux-as    汇编器

利用strace ./a.out 可以跟踪程序的执行过程

原文地址:https://www.cnblogs.com/jfyl1573/p/6257004.html