一、编译原理(过程)

  hello.c ---> hello.i ----->hello.s ---> hello.o -----> hello

  C 源文件   C 源文件     汇编源文件    可重定位文件   可执行文件

//hello.c
#include<stdio.h>
int main()
{
	printf("hello\n");
	return 0;
}

编译的过程:

  1. 预处理

   gcc -E hello.c -o hello.i

   -E:是给预处理器下的命令

   -o: 指定将要生成的目标文件的名字

   预处理:预处理仅仅是文件内容的替换,和注释的去除, 并不实际的参与编译的过程

  2. 编译

   gcc -S hello.i -o hello.s

   -S: 是给编译器下的命令

   编译:将C语言的语句翻译成汇编指令

  3. 汇编

   gcc -c hello.s -o hello.o

   -c:是给汇编器下的命令

  4. 链接

   gcc hello.o -o hello

   链接:将目标文件与静态库或动态库进行链接生成可执行文件 hello

  二、a.out的形成

gcc  hello.c--->a.out