预处理
以#开头的都是编译预处理指令,而它们不是C语言的成分
gcc -E hello.c -o hello.i
- 处理头文件包含
- 处理宏替换
- 宏在预处理时会被替换成相应的语句,就是函数、包、模板
- 处理条件编译
- 删除注释
- 不做语法检查
编译
gcc -S hello.i -o hello.s
- 将预处理后的c代码文件 编译成 汇编语言文件
- 做语法检查
汇编
gcc -c hello.s -o hello.o
将汇编语言装换成二进制文件
链接
gcc hello.o -o hello_elf
//链接不在默认目录中的第三方动态库,需要用参数-L指明去哪里找第三方动态库
gcc -L ./lib -o app main.o -lmylib
基于对象文件和对象文件库构建可执行文件的一步
对象文件中包含符号(表示源程序中定义的函数或变量),链接即符号解析——将符号与对应的定义关联