链接分析,用链接带来的好处?

营销圈公众号引导关注

一:使用链接带来的好处

1:模块化

2:效率高(代码重用,开发效率高)

二:链接的本质

话不多说先上图,我们先从一个简单的例子开始分析,大家都知道每个模块有自己的代码、数据(初始化全局变量、未初始化全局变量,静态变量、局部变量)

链接分析,用链接带来的好处?

其中局部变量temp分配在栈中,不会在过程外被引用,因此不是符号定义。具体这些变量在链接的时候如何处理,我们在后面的内容中再逐一分析,这里先简单说明一下。

下面我们用一条命令将上面的源文件转换成可执行文件:

使用GCC编译器编译并链接生成可执行程序P:

虽然上面只有一条语句,但是其中还是包含了,预处理,编译,汇编,链接这些动作的。大致的流程如下图所示:

链接分析,用链接带来的好处?

很明显最终生成的可执行文件P,是由两个可重定位目标文件(main.o,swap.o)经过链接生成的,下面我们就分析一下,这个链接过程的本质是什么。

前面我们讲过,每个模块有自己的代码、数据(初始化全局变量、未初始化全局变量,静态变量、局部变量),当然main.o,swap.o其中也包含这些数据,这些数据都有自己保存的位置,代码在text节中,初始化全局变量、静态变量在data节中,未初始化的全局变量挡在bss节中。

正是由于每个模块都有上述的text,data,bss节,链接的时候就需要将相同节的数据合并在一起,链接的本质就是合并相同的节。如下图所示:

链接分析,用链接带来的好处?

三:链接的步骤

前面我们已经讲过,链接的本质就是合并相同的节,那么具体怎么合并我们进一步分析。链接过程是将多个可重定位的目标文件生成一个可执行的目标文件,从名字上来看,可重定位已经暴露了链接的步骤了,不错,链接的时候我们需要将我们的符号表进行重定位,具体怎么操作,我们一起来看一下。

Step 1. 符号解析(Symbol resolution)

• Step 2. 重定位

上面步骤细化开来可以分为下面几个步骤,其中第一步是符号解析,2,3,4为符号重定位

简单画了一个例子,供大家理解

好了,这篇文章的内容营销圈就和大家分享到这里,如果大家对网络推广引流和网络创业项目感兴趣,可以添加微信:Sum8338 备注:营销圈引流学习,我拉你进直播课程学习群,每周135晚上都是有实战的推广引流技术和网络创业项目课程分享,当然是免费学!

版权声明:本站部分文章来源互联网用户自发投稿,主要目的在于分享信息,版权归原作者所有,不承担相关法律责任。如有侵权请联系我们反馈邮箱yingxiaoo@foxmail.com,我们将在7个工作日内进行处理,如若转载,请注明本文地址:https://www.yingxiaoo.com/84562.html