gcc编译的四个阶段解析

简介: gcc编译的四个阶段解析

编译图



参数意义:


-E Preprocess only; do not compile, assemble or link;只预处理,不会编译、汇编、链接,生成.i文件


-S Compile only; do not assemble or link;只编译,不会汇编、链接,生成.s文件


-c Compile and assemble, but do not link; 编译和汇编,不会链接,生成.o文件


-o Place the output into ;指定输出文件名为file,这个名称不能跟源文件名同名,生成.exe文件


各个阶段解释


1.预处理阶段就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些代码输出到一个“.i”文件中等待进一步处理


gcc -E -o hello.i hello.c


2.编译阶段就是把C/C++代码(比如上面的".i"文件)“翻译”成汇编代码


gcc -S -o hello.s hello.i


3.汇编阶段就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现位ELF目标文件(OBJ文件)


gcc -c -o hello.o hello.s


4.链接阶段就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序。


gcc -o hello hello.o


如果想一步生产可执行文件,就使用命令 gcc hello.c -o hello

相关文章
|
6月前
|
JavaScript 编译器
【Vue2.0源码学习】模板编译篇-模板解析阶段(总结)
【Vue2.0源码学习】模板编译篇-模板解析阶段(总结)
60 0
|
6月前
|
自然语言处理 JavaScript
【Vue2.0源码学习】模板编译篇-模板解析(代码生成阶段)
【Vue2.0源码学习】模板编译篇-模板解析(代码生成阶段)
36 0
|
6月前
|
JavaScript
【Vue2.0源码学习】模板编译篇-模板解析阶段(文本解析器)
【Vue2.0源码学习】模板编译篇-模板解析阶段(文本解析器)
44 0
|
6月前
|
自然语言处理 JavaScript
【Vue2.0源码学习】模板编译篇-模板解析阶段(整体运行流程)
【Vue2.0源码学习】模板编译篇-模板解析阶段(整体运行流程)
41 0
|
1月前
|
存储 算法 安全
【C++ 泛型编程 高级篇】 C++编译时函数调用技术深度解析
【C++ 泛型编程 高级篇】 C++编译时函数调用技术深度解析
36 1
|
1月前
|
存储 算法 编译器
【C++ 泛型编程 进阶篇】C++模板元编程深度解析:探索编译时计算的神奇之旅
【C++ 泛型编程 进阶篇】C++模板元编程深度解析:探索编译时计算的神奇之旅
90 0
|
3月前
|
存储 自然语言处理 JavaScript
【Vue原理解析】之模版编译
Vue.js是一款流行的JavaScript框架,它采用了基于组件的开发模式,使得前端开发更加简单和高效。而Vue的核心功能之一就是模版解析,它负责将Vue组件中的模版代码转化为可执行的JavaScript代码。本文将深入探讨Vue模版解析的作用、核心源码分析以及总结。
38 0
|
6月前
|
JavaScript 前端开发
TypeScript 可以编译成纯 JavaScript,并且可以在任何浏览器上运行,具体应用案例解析
TypeScript 可以编译成纯 JavaScript,并且可以在任何浏览器上运行,具体应用案例解析
59 1
|
6月前
|
JavaScript 算法
【Vue2.0源码学习】模板编译篇-模板解析阶段(优化阶段)
【Vue2.0源码学习】模板编译篇-模板解析阶段(优化阶段)
23 0
|
6月前
|
存储 自然语言处理 JavaScript
【Vue2.0源码学习】模板编译篇-模板解析阶段(HTML解析器)
【Vue2.0源码学习】模板编译篇-模板解析阶段(HTML解析器)
35 0

推荐镜像

更多