标签:image dump 文件 重要 linking 大型 位置 gcc 共享库
链接
(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。
链接
将帮助我们构造大型程序
链接
将帮助我们避免一些危险的编码错误
链接
将帮助我们理解语言的作用域规则是如何实现的
链接
将帮助我们理解其他重要的系统概念
链接
将是我们能够利用共享库
在这段我将重点介绍 数据在`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