一、链接的定义

链接(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。

二、链接的作用

  1. 链接将帮助我们构造大型程序

  2. 链接将帮助我们避免一些危险的编码错误

  3. 链接将帮助我们理解语言的作用域规则是如何实现的

  4. 链接将帮助我们理解其他重要的系统概念

  5. 链接将是我们能够利用共享库

三、链接过程那些事

在这段我将重点介绍 数据在`ELF文件` (Executable and Linkable Format,可执行可链接格式)中位置信息。

1、程序员当然是从Hello World!开始啦!所以我们先创建一个main.c文件 如下

2、用 gcc -c main.c -o main.o main.c文件转化为main.o

3、用objdump -d main.o 我们将得到其汇编代码,如下:

从图中我们可以看到最左侧的0:表示的这个程序起始地址为0,造成这个的原因是我们还没链接,还没有重定位

4、用gcc -O2 -o main main.c 得到名为main的可执行文件

5、再用objdump -d main可以看到如下:

它的起始地址是401000与图3的起始地址不同。

02-13 14:21