计算机---之编译过程

首先讲讲编译系统的过程,大概有四个步骤。

 .lib和.dll文件、.a和.so文件 以及 反汇编 科普 - yuanshuilee - 勇敢的劳尤条

 预处理器:根据程序中以#开头的命令,对源代码进行修改,得到另一个C程序,以.i为扩展名。

编译器:ccl将hello.i翻译成文本文件hello.s,这是一个汇编指令程序。

汇编器:as将hello.s翻译成机器码,并将这些指令打包,打包成可重定位目标程序,也就是obj文件。

链接器:负责合并obj文件,得到可执行目标文件hello。比如hello用到了printf函数,那么链接器就将printf.o和hello.o合并最后的可执行程序中。

 

知道了上面的过程之后,我们要知道一个lib文件是obj文件的集合。当然,其中还夹杂着其他一些辅助信息,目的是为了让编译器能够准确找到对应的obj文件。也就是所有.lib和.dll文件、.a和.so文件都是二进制文件。如果想通过这些二进制文件(比如obj文件、exe文件)获取源代码,这是很困难的,没有直接方法。间接的方法就是通过反汇编。

知识储备:

程序的装入:即什么是重定位:请点击 程序的装入

注:.o文件是可重定位的二进制文件,也就是他还没有进行链接,即没有配上一些静态库或者动态库,可执行文件是在装入之后才会产生的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值