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