您的位置:首页 > 其它

gcc编辑器具体编译过程

2017-04-09 09:31 211 查看
(一个源文件到可执行文件)gcc编辑器编译过程:预处理,编译,汇编,链接

预处理:gcc -E   1.头文件展开,2.以#开头的代码(包括宏定义) 

【< 是从系统的库文件找(系统自带的),“是在当前的库,找不到再从系统里找(自己写的)】

(3.条件编译:#ifndef ...

              #else

              #endif)                                           

编译:gcc -c 1.语法检查 2.词法分析

汇编:gcc -S 

链接:链接阶段做什么

链接过程生成可执行文件

链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,

使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体

(1)静态链接

在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。

这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。

静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。

(2)动态链接

在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。

链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。

在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。

动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: