02编译和链接
原创
©著作权归作者所有:来自51CTO博客作者lindo的原创作品,请联系作者获取转载授权,否则将追究法律责任
第二章 编译和链接
1 从原代码待可执行文件
预编译,编译,汇编,静态链接
2 编译器
3 连接器
最初的代码都是程序员写在纸上,用的是机器的01码,运行时存储在纸带上,子程序和跳转的目标地址都是事先计算好的,这种人工进行的地址调整就是链接器所做的工作。当程序需要修改时,如插入或删除某些指令,各目标地址需要重新计算,该过程叫重定位。
汇编语言产生后,符号的概念被普及,用来表示变量或者符号的地址,程序员从枯燥的地址调整工作中解脱出来。
随着软件的规模增大,模块的概念被提出来。模块间的函数调用或者模块间的变量访问都是模块间的符号引用。模块间依靠符号进行通信,而模块的拼接过程就是链接。
4 静态链接
从原理上讲,连接器的工作无非就是把一些指令对其他符号的引用加以修正,链接过程主要包括:
地址空间分配
符号决议
重定位,地址修正的过程也叫重地位,每个要修正的地方叫重定位入口。
上一篇:01温故而知新
下一篇:03目标文件里有什么
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
GCC 编译过程和链接库
GCC编译C源码有四个步骤:预处理-----> 编译 ----> 汇编 ----> 链接
动态链接库 链接库 静态链接库 gcc编译过程 -
C语言编译、链接和运行详解
文章目录1. 什么是编译2. 什么是链接3. 什么是运行4. C 程序开发注意事项15. 如果想只生成目标 exe 文件,不想执行结果6. 编译、链接和运行的流程7. C 程序开发注意事项21. 什么是编译有了 C 源文件,通过编译器将其编译成 obj 文件(目标文件)。如果程序没有错误,没有任何提示,
C语言编译、链接和运行详解 c语言基础 C语言编译 C 程序开发注意事项 C语言链接