码迷,mamicode.com
首页 > 其他好文 > 详细

链接一

时间:2019-09-28 20:37:54      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:image   dump   文件   重要   linking   大型   位置   gcc   共享库   

一、链接的定义

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

链接一

标签:image   dump   文件   重要   linking   大型   位置   gcc   共享库   

原文地址:https://www.cnblogs.com/ourEmpire/p/11604419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!