编译原理:编译基础知识

各阶段介绍

  1. 预处理阶段: 编译器将C源代码中的包含的头文件.h编译进来,将.c预处理输出.i文件。
  2. 编译阶段: GCC首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,GCC把代码翻译成汇编语言。该选项只进行编译而不进行汇编,生成汇编代码,将预处理输出文件.i汇编成.s文件
  3. 汇编阶段: 汇编阶段是把编译阶段生成的.s文件转成二进制目标代码,输出.o文件
  4. 链接阶段: 将编译输出文件.o链接成最终可执行文件.exe

预处理阶段

测试代码

#include <stdio.h>
#define HELLO "Hello, World!"

int main() {
    printf(HELLO);
    return 0;
}
gcc -E demo.c -o demo.i

阶段处理

  • #include <stdio.h>被展开为实际的头文件内容
  • 宏HELLO也被展开为字符串"Hello, World!"。

编译阶段

测试代码

gcc -S demo.c -o demo.s

生成文件

生成文件是汇编文件

汇编阶段

测试代码

gcc -c demo.c -o demo.o

生成文件

生成文件是二进制文件,不可执行

链接阶段

测试代码

gcc demo.c -o out

生成文件

生成文件是二进制文件,可以执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值