链接器

✍ dations ◷ 2025-04-28 21:16:30 #程序设计工具,编译器软件

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

相关

  • 叶酸叶酸(Folate、folic acid)也称为维生素B9、维生素M、维生素Bc,属于维生素B。叶酸可用于治疗由叶酸缺乏症引起的贫血。叶酸也是孕妇的营养补充品。在新生儿的神经管缺损(英语:Neur
  • 灵菌红素灵菌红素(Prodigiosin,正式名称为2-methyl-3-pentyl-6-methoxyprodiginine)是Prodiginin(中文名不详)的一种。它具有Prodiginin的基本结构,也就是三吡咯环,其中的一个吡咯环C2上带
  • 觉罗觉罗(满语:ᡤᡳᠣᡵᠣ,穆麟德:Gioro,或满语:ᡤᡳᠶᠣᡵᠣ,穆麟德:Giyoro),俗称红带子,是清朝旁支皇族的称号,冠在其名字(gebu)之前。当使用作为头衔时,其意义与使用作为姓氏(哈拉)的觉罗不同
  • 巴罗洛宫巴罗洛宫(西班牙语:Palacio Barolo)是阿根廷布宜诺斯艾利斯的一座22层办公楼,该市的地标之一,位于五月大道1370号。意大利建筑师Mario Palanti受雇主路易斯·巴罗洛之托,设计了这
  • L.约翰逊拉里·德米特里克·约翰逊(英语:Larry Demetric Johnson,1969年3月14日-),昵称大妈(Grandmama),美国退役篮球运动员,身高2米01,场上司职大前锋。约翰逊大学效力于内华达大学拉斯维加斯
  • 俄罗斯联邦能源部俄罗斯联邦能源部(Министерство энергетики Российской Федерации),俄罗斯联邦政府组成部门之一,主要负责能源政策等事务。能源部于2
  • 赤冢不二夫赤冢不二夫(日语:赤塚 不二夫,1935年9月14日-2008年8月2日),日本漫画家,血型A型。他本名为赤冢藤雄,发音和笔名赤冢不二夫相同。出生于满州国热河省滦平县(今中国河北省承德市),1946年
  • 松木侠松木侠(1898年3月9日-1962年7月11日)日本山形县西田川郡大宝寺村(今鹤冈市)人,满洲国政治人物。松木侠是官吏松木清直的第三个儿子。1916年,自荘内中学校(今山形县立鹤冈南高等学校)
  • 会话密钥Session key,中文常称作对话键、会议密钥、会话密钥、对话密钥或是会话密钥,是一次性用于会话中加密用的对称式密钥,所有成员使用同一把密钥来加密明文、解密密文,在此次连线结
  • 加藤阳子加藤阳子(1960年10月-)是一名日本历史学家,东京大学教授,专攻日本近现代史。出身于埼玉县大宫市,大学院期间曾经被伊藤隆指导,并且经常和福田和也举办对谈的座谈会。