第七章 链接
来源:互联网 发布:java无返回值的方法 编辑:程序博客网 时间:2024/05/19 09:48
## 链接 ##
链接(linking):是将各种代码和数据部分收集起来并组合成为一个单一文件的过程。
这个文件可被加载到存储器并执行。
链接可以执行于编译时,加载时,运行时。
链接是由链接器(linker)的程序自动执行的。
链接通常是由链接器来默默处理的。理解链接器将帮助你:
- 构造大型程序
- 避免一些危险的编程错误
- 理解语言的作用域规则是如何实现的
- 理解其他的系统概念
- 能够利用共享库
7.1 编译器驱动程序
大多数编译系统提供编译驱动程序(compiler driver),它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。
7.2 静态链接
静态链接器(static linker):以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。
链接器完成两个主要任务:
- 符号解析(symbol resolution)。
- 重定位(relocation)。
7.3 目标文件
目标文件有三种形式:
- 可重定位目标文件。
包含二进制代码和数据,其形式可以在编译时与其他可重定位目标文件合并起来,创建一个可执行目标文件。 - 可执行目标文件。
包含二进制代码和数据,其形式可以被直接拷贝到存储器并执行。 - 共享目标文件。
一种特殊类型的可重定位目标文件,可以在加载或者运行时被动态地加载到存储器并连接。
编译器和汇编器生成可重定位目标文件(包括共享目标文件)。链接器生成可执行目标文件。
7.4 可重定位目标文件
7.5 符号和符号表
三种不同的符号:
- 由m定义并能被其他模块引用的全局符号。全局链接器符号对应于非静态的C函数以及被定义为不带C static 属性的全局变量
- 由其他模块定义并被模块m引用的全局符号。外部符号external
- 只被模块m定义和引用的本地符号。本地链接器符号对应于带static属性的C函数和全局变量。
7.6 符号解析
7.7 重定位
7.8 可执行目标文件
7.9 加载可执行目标文件
7.10 动态链接共享库
7.11 从应用程序中加载和链接共享库
7.12 与位置无关的代码(PIC)
7.13 处理目标文件的工具
7.14 小结
0 0
- 第七章 链接
- CSAPP第七章-链接
- CSAPP阅读第七章 链接 《补录》
- 《深入理解计算机系统》 第七章 链接
- 深入理解计算机系统-----之 第七章 链接
- 深入理解计算机系统第七章-----链接
- 《深入理解计算机系统》第七章链接 读书笔记
- 第七章 点击链接换图片
- 自己动手写编译器、链接器-第七章
- 深入理解计算机系统 第七章链接总结
- 《深入理解计算机系统》读书笔记——第七章 链接
- 第七章:Nodejs + 模块mssql 链接sqlserver数据库方法实测记录
- CSAPP读书笔记第七章:(变量作用域与链接器)
- 第七周作业链接-天气APP
- 第七章
- 第七章
- 第七章
- 第七章
- 1001. A+B Format
- iOS中几种数据持久化方案
- 《iOS Human Interface Guidelines》——Navigation
- 为什么Java byte 类型的取值范围是-128~127
- Android M 新的运行时权限开发者需要知道的一切
- 第七章 链接
- redis使用的命令记录
- KSImageNamed 安装后无效解决方法 亲测有用
- ANSI、UNICODE、UTF-8编码格式相互之间转换
- JavaWeb监听器
- 高德地图的API使用教程
- 软件测试总结
- iOS解决http请求不能使用问题
- 深入浅出-iOS程序性能优化