linux -- gcc将源代码转化成可执行代码过程

gcc将源代码转化成可执行代码过程:
首先,C预处理器扩展源代码, 插入所有用#include命令指定的文件, 并扩展所有用#define声明指定的宏。
其次,编译器产生源代码的汇编代码,名字为“文件名.s”
接下来,汇编器会将汇编代码转化成二进制目标代码文件“.o”(目标代码是机器代码的一种形式,它包含所有指令的二进制表示,但是还没填入全局值的地址)
最后,链接器将目标代码文件与实现库函数(例如printf)的代码合并, 并产生最终的可执行代码文件(可执行代码是机器代码的第二种形式,也就是处理器执行的代码格式)

参考资料:《深入理解计算机系统》

预处理后的文件(一般为".i")
gcc -E .c
在这里插入图片描述

在这里插入图片描述

.s文件(汇编代码)
gcc -Og -S 文件.c
在这里插入图片描述

文件.o(目标文件)
gcc -Og -o 文件.c

在这里插入图片描述
反汇编
objdump -d 文件.o
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值