gcc编辑器具体编译过程
2017-04-09 09:31
211 查看
(一个源文件到可执行文件)gcc编辑器编译过程:预处理,编译,汇编,链接
预处理:gcc -E 1.头文件展开,2.以#开头的代码(包括宏定义)
【< 是从系统的库文件找(系统自带的),“是在当前的库,找不到再从系统里找(自己写的)】
(3.条件编译:#ifndef ...
#else
#endif)
编译:gcc -c 1.语法检查 2.词法分析
汇编:gcc -S
链接:链接阶段做什么
链接过程生成可执行文件
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,
使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。
这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。
静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2)动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。
链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。
在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。
动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
预处理:gcc -E 1.头文件展开,2.以#开头的代码(包括宏定义)
【< 是从系统的库文件找(系统自带的),“是在当前的库,找不到再从系统里找(自己写的)】
(3.条件编译:#ifndef ...
#else
#endif)
编译:gcc -c 1.语法检查 2.词法分析
汇编:gcc -S
链接:链接阶段做什么
链接过程生成可执行文件
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,
使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体
(1)静态链接
在这种链接方式下,函数的代码将从其所在地静态链接库中被拷贝到最终的可执行程序中。
这样该程序在被执行时这些代码将被装入到该进程的虚拟地址空间中。
静态链接库实际上是一个目标文件的集合,其中的每个文件含有库中的一个或者一组相关函数的代码。
(2)动态链接
在此种方式下,函数的代码被放到称作是动态链接库或共享对象的某个目标文件中。
链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。
在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。
动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。
相关文章推荐
- gcc编译的具体执行过程
- gcc编译的具体过程
- gcc编译过程概述
- gcc编译过程
- gcc编译过程概述
- gcc编译过程
- GCC 编译过程及相关的知识
- linux GCC编译过程
- gcc编译过程概述
- gcc编译过程概述
- Linux下GCC编译的四个过程
- Redhat 5 安装GCC 编辑器过程
- arm-linux-gcc 4.3.2编译安装过程
- GCC的编译过程
- 我的arm-gcc工具编译安装过程
- GCC编程四个过程:预处理-编译-汇编-链接
- [Pthread] Gcc 编译过程
- 使用GCC编译代码(附编译过程)
- 在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。 随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来
- gcc编译过程