深入理解计算机系统-程序链接

链接

就是将不同部分的代码和数据手机和组合成为一个单一文件的过程,这个文件可被加载到存储器并执行。

链接过程可以在如下时间执行:

  1. 编译时:在源代码翻译成机器代码时
  2. 加载时:程序被加载器加载到存储器并执行时
  3. 运行时:由应用程序去完成这个工作,OS提供系统调用接口

静态链接

以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。输入的可重定位目标文件由各种不同的代码和数据节组成。

其主要完成如下两个任务:

  1. 符号解析:目标文件定义和引用符号。将每个符号引用和一个符号定义联系起来。即为:将程序中出现的存储单元名字和真正的定义处联系起来,主要是作用域问题。
  2. 重定位:通过把每个符号定义和一个存储器位置联系起来,然后修改所有对这个符号的引用,使得他们指向这个存储器位置,从而从定位这些数据节。

目标文件

  • 可重定位目标文件
  • 可执行目标文件
  • 共享目标文件

动态链接


猜你喜欢

转载自qianjigui.iteye.com/blog/1485669
今日推荐