程序的编译,链接
2019-09-24 18:01 老九君 阅读(308) 评论(0) 收藏 举报在windows下进行编程时,我们采用的大多数是IDE,这样节省时间,提高开发的效率,但是在学习是还是要对原理进行深层次的探讨,下面说下程序的编译和链接。
编译过程
1.编译器以源文件为单位进行编译
2.一个C文件对应一个目标.O文件
3.一个汇编.S文件对应一个.O文件
链接过程
1.链接将各个.O文件组装为可执行文件
2.相同的段组装在一起
3.加上不要的头文件
说明:在链接的时候将各个段组装在一起,在程序的运行中操作系统把程序进行分段存储(这个是操作系统的工作机制,改天发个文章说明一下),程序分为数据段没带吗段BSS段,堆栈段,把各个段进行分段存储,这样链接的时候把数据段与数据段链接在一起,把代码段与代码段链接在一起……
那么为什么相同的段可以链接在一起呢?
-------链接脚本
链接脚本功能如下简介:
1.链接脚本规定各个段的组装顺序,起始地址,位置对齐等
2.规定了输出可执行文件的格式,平台等信息
3.链接器根据链接脚本进行组装
下面是网上的一个链接器脚本的示意代码
说明:不同的IDE连接脚本一般不同,我们在开发时 F5就可以了,不需要关系这个链接脚本
不同OS下的连接脚本也是不一样的。
老九学堂会员出品
作者:快乐的镜子