链接一

Posted ourempire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链接一相关的知识,希望对你有一定的参考价值。

一、链接的定义

链接(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的起始地址不同。

以上是关于链接一的主要内容,如果未能解决你的问题,请参考以下文章

高效Web开发的10个jQuery代码片段

一步一图一代码,一定要让你真正彻底明白红黑树

miniui后台无法接收到input传值

最新开源指数发布:VSCode成为第一代码编辑器百度Apollo增长最快

从其他片段(如导航链接)更改片段

用 iPad 来写代码,GitHub 又一代码编辑器,开源了!