代码改变世界

程序的编译,链接

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下的连接脚本也是不一样的。

 

老九学堂会员出品

作者:快乐的镜子