链接器

✍ dations ◷ 2025-06-10 22:05:44 #程序设计工具,编译器软件

链接器(英语:Linker),又译为链接器、连结器,是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库,链接为一个可执行文件。

在IBM大型主机比如OS/360(英语:OS/360)上,链接器是linkage editor;在Unix-like系统上常用的链接器是GNU ld(英语:GNU linker)。目标文件是包括机器码和链接器可用信息的程序模块。简单的讲,链接器的工作就是解析未定义的符号引用,将目标文件中的占位符替换为符号的地址。链接器还要完成程序中各目标文件的地址空间的组织,这可能涉及重定位工作。

大多数现代操作系统都提供动态链接(英语:Dynamic linking)和静态链接(英语:Static linking)两种形式。

增量链接(Incremental Linking),是针对大型软件的源代码的很小改动就需要花费很长时间全部重新链接问题。特别是程序开发时,不可避免地要不断修改、重新编译、链接、调试程序,链接的耗时大大影响了编程者工作效率。解决办法是:所有函数不再首尾紧挨着存放在内存地址空间,而是在函数之间加上padding区域作为间隔,为函数添加几句指令稍微变长留有余地。只要函数的代码改动不大,没有超过原padding所占的空间,链接器只需延长该函数自身,这大大提高了链接的速度。还可以在可执行文件的整个.text节末尾设置一个较大的padding区域,或者使用.textbss节,用来存放修改后变大很多的函数。为了解决由此带来的函数入口地址需要重定位,在.text节中增加ILT表(Incremental Linking Table),所有的函数调用都是通过间接跳转(jum)指令实现,因此函数地址改变仅需要修改ILT表。

Visual Studio在Debug模式下具有动态编译链接功能,也即“Edit and Continue”功能。一个函数在Visual Studio中设断点或单步调试,这时该函数在.text节中;修改源代码后继续执行该函数,Visual Studio会重新编译该函数并把它加载到.textbss节中的未利用地址空间(原为padding的部分),并修改对该函数调用时跳转所用的ILT表条目以及当前EIP寄存器值。

相关

  • 正蓝旗正蓝旗(蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban Ulus Ti
  • 现行盲文现行盲文是一种用于拼写汉语普通话的盲文,1953年由中华人民共和国教育部颁布并在全国推行。虽然后来推出了汉语双拼盲文,在中国大陆,本方案仍更为通行。现行盲文是表音文字,汉语
  • 期货市场期货交易所(Futures exchange ),或称为期货选择权交易所,或称期货市场(futures market),是以公司或互助组织的型态来提供衍生性金融商品的交易平台。期货交易所起源于对商品期货
  • 润滑润滑是一种可减少摩擦力的程序或是技术,润滑会出现在两个彼此相当接近,而且有相对运动的表面上,其作法是在两个表面加入润滑剂,以减少相对运动时产生的摩擦力。润滑剂可以是粉状
  • 中华人民共和国死刑犯列表本表列出中华人民共和国政府发生过死刑(立即执行)判决的案件及曾经被判处死刑(立即执行)的人(无论是否被处决)的简要信息。
  • 冰舌冰舌(英语:Ice tongue)是由冰川的冰川冰沿着地表或冰面向雪线以下缓慢移动而形成的。是冰河或山谷冰川的延伸部分,冰舌常常会伸入海洋或者湖泊中。
  • 奥卡帕县坐标:6°31′S 145°37′E / 6.517°S 145.617°E / -6.517; 145.617奥卡帕县(英语:Okapa District),是巴布亚新几内亚的县份之一,位于新几内亚岛东部,由东高地省负责管辖,首府设于
  • cat (Unix)cat是unix系统下用来查看文件连续内容用的指令,字面上的含意是“concatenate”(连续)的缩写。除了用来作为显示文件内容外,cat指令也可用于标准流上的处理,如将显示的消息转入
  • 顾城顾城(1956年9月24日-1993年10月8日),生于北京,中国当代诗人,作家顾工之子,朦胧诗主要代表人物之一。《鸭绿江》诗刊一九八一年评选“最年轻的青年诗作者”,《拉萨晚报》一九八五年评
  • 朱利安·列侬约翰·查尔斯·朱利安·列侬(英语:Julian Lennon,1963年4月8日-)是英国男歌手,生于英国利物浦,为英国披头士乐团灵魂核心约翰·列侬的长子。他是三首披头士作品的灵感来源:、和。他