预处理到运行-C编译流程+指令[随手笔记]

预处理

  1. 完成宏替换、文件引入、以及去除空行、注释等,为下一步的编译做准备。
  2. 对各种预处理命令进行处理,包含头文件的包含、宏定义的扩展、条件编译的选择等。
    命令:gcc -E test.c -o test.i
    -E是让gcc在预处理结束后停止编译,test.c为源代码文件,test.i为预处理后输出的文件

编译

  1. 讲预处理后的代码编译成汇编代码。在这个阶段主要检查代码的规范性、是否有语法错误等,以确定代码实际要做的工作,在检查无误后,再把代码翻译成汇编语言
  2. 编译程序执行时,先分析,后综合。分析,就是指词法分析、语法分析、语义分析和中间代码生成。综合,就是指代码优化和代码生成。
  3. 大多数的编译程序直接产生机器语言的目标代码,形成可执行的目标文件,也有的是先产生汇编一级的符号代码文件,再调用汇编程序进行翻译和加工处理,最后产生可执行的机器语言目标文件。
    命令:gcc -S test.i -o test.s
    -S是让gcc在编译结束后停止编译过程,test.s文件为编译后生成的汇编代码。

汇编

  1. 汇编就是把编译阶段生成的.s文件转换成目标代码,也就是机器代码(01序列)
    命令:gcc -c test.s -o test.o
    -c让gcc在汇编结束后停止编译过程,test.o文件是汇编后生成的机器码目标文件。

链接

  1. 链接就是将多个目标文件以及所需的库文件链接生成可执行目标文件的过程
    命令:gcc test.o -o test
    -o本质上是一个重命名选线,不是用-o选项时,默认生成的是a.out文件。

运行

命令:./test
这里是引用

一条指令直接链接

gcc hello.c -o hello

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值