链接器的由来

本文探讨了链接器的历史背景及其重要性。介绍了早期程序员如何使用机器语言编写程序,并随着编程语言的发展,链接器如何帮助实现模块化编程,提高开发效率和程序性能。通过模块化,一个大型程序可以分解为多个源文件,便于管理和维护;同时,通过共享库的使用,避免了代码重复,节省了空间。
  • 原始的链接器概念早在高级编程语言出现之前就已经存在了
  • 最早的程序员 用机器语言编写程序,并记录在纸带或卡片上这里写图片描述
  • 更高级编程语言的出现
  • 程序越来越复杂,需要人开发不同的程序模块
  • 子程序(函数)起始地址和变量起始地址是符号定义
  • 调用子程序(函数或过程)和使用变量即是符号的引用(reference)
  • 一个模块定义的符号可以被另一个模块引用
  • 最终须编译,链接,链接时须在符号引用处填写定义处的地址
  • 这里写图片描述

使用链接的好处

  • 模块化
    1)一个程序可以分成很多源程序文件
    2)可以构建共享函数库,如数学,C标准库(多人开发,代码重用,开发效率高)
    例如 libc.a(C标准库):包含1392个目标文件(约8MB),包含I/O,存储分配,信号处理,字符串处理,时间和日期,随机数生成,定点整数算术运算。

  • 效率高
    1)时间上,可分开编译
    只需要重新编译被修改的源程序文件,然后重新链接
    2)空间上,无需包含共享库所有代码
    源文件中无需包含共享库函数的源码,只要直接调用即可
    (例如, 只要直接调用printf()函数,无需包含其源码)
    可执行文件和运行的内存中只需包含所调用函数的代码(即printf的二进制函数源码)而不需要包含整个共享库
    (例如,只包含printf.o的代码,不包括libc.a中其他函数的代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值