链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行。
1、编译过程:
1.预编译
替换宏定义和外部文件的引用(例如 #define 和 #include)
[xyk@xyk linking]$ gcc -E main.c -o main.i
2.编译
将c语言或者c++语言翻译成汇编语言
[xyk@xyk linking]$ gcc -S main.i -o man.s
3.汇编
将汇编语言使用汇编器,编译成机器语言
[xyk@xyk linking]$ gcc -c main.s -o main.o
4.链接
将多个目标文件链接到一起,生成可执行的程序
[xyk@xyk linking]$ gcc -o p main.o
可记忆为:ISO
2、静态链接
静态链接器:以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。
链接器必须完成两个主要任务:
1.符号解析:目标文件定义和引用符号。符号解析的目的是将每个符号的引用刚好和一个符号定义联系起来。
2.重定位:编译器和汇编器生成从地址0开始的代码和数据节。链接器通过把每个符号定义与一个存储器位置联系起来,然后修改所有对这些符号的引用,使得它们指向这个存储器位置,从而重定位这些节。
3、目标文件
目标文件有三种形式:
1.可重定位目标文件:可理解为经过汇编器后的生成的.o文件或者静态库文件
2.可执行目标文件:可理解为经过静态链接的可执行文件。
3.共享目标文件:可理解为动态库文件
在不同的操作系统中,目标文件的格式都不相同,在Linux系统中使用ELF(excutable and linkable format)格式,而在window NT中使用PE(portable executable)格式。
分享到:
相关推荐
以上是对《深入理解计算机系统》第一章可能涵盖内容的概览,通过这一章的学习,读者将建立起对计算机系统基础架构的初步认识,并为后续章节的学习打下坚实的基础。在markdown格式的学习笔记中,这些知识点可能会以...
《深入理解计算机系统》是计算机科学领域的一本经典教材,主要涵盖了计算机硬件、软件以及它们之间的交互。...在阅读《深入理解计算机系统》的第二章时,重点关注这些概念,并尝试通过实践来加深理解。
《深入理解计算机系统》(英文原版,Complete Edition)是一本深受全球IT专业人士推崇的经典教材,由Randal E. Bryant和David R. O'Hallaron合著。这本书以深入浅出的方式介绍了计算机系统的各个方面,包括硬件、...
在深入理解计算机系统的第七章中,我们探讨了与链接和装载相关的高级概念,这些是程序在计算机中实际执行前的关键步骤。本章的参考文献整理提供了深入学习这些主题的宝贵资源,尤其是对于那些想要深入了解软件工程...
《深入理解计算机系统》这本书是计算机科学的经典之作,它涵盖了计算机系统的多个重要方面,包括硬件、软件、编程语言和系统设计。以下是对书中的部分知识点的详细解释: 1. **数值计算**: - **截断与模运算**:...
《深入理解计算机系统》(英文版,第三版),也被称为"Computer Systems: A Programmer's Perspective 3rd Edition",是一本深受欢迎的计算机科学教材,旨在帮助程序员从底层角度理解计算机系统的运作机制。...
根据提供的文件信息,以下内容将详细展开介绍《深入理解计算机系统》家庭作业答案的各个章节的知识点。 《深入理解计算机系统》是一本计算机科学领域的经典教材,它深入探讨了计算机系统的设计和实现,以及系统软件...
### 深入理解计算机系统 第三版 csapp 3ed #### 一、书籍概述与作者背景 《深入理解计算机系统》第三版(CSAPP 3ed)是一本广泛被计算机科学领域的学生和专业人士所推崇的经典教材。本书由卡内基梅隆大学的两位...
《深入理解计算机系统》是一本经典的计算机科学教材,它涵盖了计算机系统的多个重要方面,包括硬件、软件以及它们之间的交互。本实验"Link Lab"聚焦于其中的一个关键环节——链接,这是构建可执行程序的重要步骤。...
《深入理解计算机系统》(CSAPP)是卡内基梅隆大学(CMU)开设的一门经典计算机科学课程,这门课全面涵盖了计算机系统的各个方面,包括硬件、操作系统、编译器、网络以及内存管理等核心主题。提供的全套PPT旨在帮助学生...
《深入理解计算机系统》是计算机科学领域的一本经典著作,英文版第三版的发布受到了广大程序员和计算机专业人员的高度关注。这本书深入浅出地讲解了计算机系统的各个方面,旨在帮助读者理解计算机系统的工作原理,...
### 深入理解计算机系统真题解析 #### 一、IEEE浮点数标准 - **选项分析**: - **A**:不正确。IEEE浮点数的标准中,`exponent bits` 和 `fraction bits` 的分配确实会影响能够表示的数值范围。例如,增加指数...
《深入理解计算机系统》是计算机科学领域的一本经典教材,由Randal E. Bryant和David R. O'Hallaron合著。这本书旨在帮助读者理解计算机系统的底层运作原理,从而能够更高效地编写程序并优化系统性能。中文版的第二...