链接器

✍ dations ◷ 2025-07-01 09:46:35 #程序设计工具,编译器软件

链接器(英语: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寄存器值。

相关

  • 掌骨掌骨是手部骨骼中间的部分,连接在近端手指及腕骨之间,而腕骨再与前臂连结。掌骨由五个圆柱状的骨头组成,由桡骨到尺骨侧依序命名(I-V)。每个由一块主体及两个极端组成。人体手部
  • 人工生命体人造生命,又称合成生命,是近期出现的生物技术术语,指利用生物技术干预、改变遗传密码从而产生新的生命个体的研究。创造人造生命是于合成生物学或探索生命的起源领域工作的科学
  • Fusulinida.mw-parser-output ruby.zy{text-align:justify;text-justify:none}.mw-parser-output ruby.zy>rp{user-select:none}.mw-parser-output ruby.zy>rt{font-feature-settings:
  • 火拼时速尖峰时刻可以指:
  • 黑箭运载火箭黑箭号运载火箭是英国的卫星运载火箭,建基于黑骑士火箭,黑箭号运载火箭最初由Saunders-Roe公司开发,由航天组织改良,燃料为高浓度双氧水及RP-1煤油。1971年7月29日,英国官员在下
  • 佩克洛峰坐标:45°37′56″N 06°13′52″E / 45.63222°N 6.23111°E / 45.63222; 6.23111佩克洛峰(法语:Mont Pécloz),是法国的山峰,位于该国东部,由萨瓦省负责管辖,处于首都巴黎东南面50
  • 米哈伊尔·德米特里耶维奇·留明米哈伊尔·德米特里耶维奇·留明(俄语:Михаил Дмитриевич Рюмин,1913年9月1日-1954年7月22日)是苏联国家安全部副部长、国家安全部侦讯局长,被坊间称为“血
  • A-3攻击机A-3“空中武士”攻击机(英语:Skywarrior)是美国道格拉斯飞机公司为美国海军研制的一种舰载重型攻击/轰炸机。原型机于1952年10月试飞成功,11个月后生产型下线开始服役。编号为A3
  • 刘天和刘天和(1479年7月5日-1545年1月27日),字养和,号松石,湖广承宣布政使司黄州府麻城县(今湖北省麻城市)人,明朝政治人物。正德三年(1508年)戊辰科进士,授南京礼部主事。因刘瑾罢黜御史十八
  • 松冈博文松冈博文(日语:まつおか ひろふみ;1968年12月8日-2015年10月20日),生前长期参与日本Falcom游戏公司旗下游戏音乐制作,是Falcom Sound Team jdk成员,是新海诚、 天门的挚友。曾用艺名