程序编译过程
来源:互联网 发布:易语言编程有哪些书 编辑:程序博客网 时间:2024/06/05 08:46
在运行一个程序时,事实上经过了预编译,编译,汇编,链接四个过程。只不过我们在运行程序时,这些步骤被隐藏了。
①预编译:
把源代码文件如main.c,被预编译成一个.i文件。在linux下的命令为:
gcc-E main.c -o main.i
预编译的具体任务:
1.将所有的“#define”删除,并展开所有的宏定义。
2.处理所有条件预编译指令。
3.处理头文件预编译指令,将被包含的文件插入到该预编译指令的位置。
4.删除所有的注释。
5.添加行号和文件名标识。
6.保留所有的#pragma编译器指令,因为编译器需要使用它们。
预编译的作用:
经过预编译后的.i文件不包含任何宏定义,并且包含的文件也已经被插入到.i文件中。当我们无法判断宏定义是否正确或头文件包含是否正确时,可以查看预编译后的文件夹来确定问题。
②编译:
把预编译后的文件如main.i,编译成.s文件。在linux下的命令为:
gcc-S main.i -o main.s
编译的具体任务:
把预编译完的文件进一步的进行一系列的语法,词法,解析检查。
③汇编:
把编译后的文件如main.s,汇编成.o文件。在linux下的命令为:
gcc-c main.s -o main.o
汇编的具体任务:
通过汇编代码转化为机器可以执行的指令。
④链接
把汇编后的文件如main.o,链接成.exe可执行文件。在linux下的命令为:
gcc main.o -o main
链接的具体任务:将不同部分的代码和数据收集组合为一个单一文件的过程。
gcc编译:
{预编译:gcc-E main.c -o main.i
gcc -o main main.c {编译:gcc-S main.i -o main.s
{汇编:gcc-c main.s -o main.o
{链接:gcc main.o -o main
再用./main进行运行输出。
- C程序编译过程
- C程序编译过程
- C程序编译过程
- C程序编译过程
- C程序编译过程
- 程序的编译过程
- C程序编译过程
- C++程序编译过程
- C程序编译过程
- 程序编译过程
- c++程序编译过程
- 程序的编译过程
- 程序编译过程
- C++程序编译过程
- C程序编译过程
- 程序的编译过程
- C程序编译过程
- 程序编译过程
- LintCode_539_移动零
- 关于SQL宽字节注入的学习
- 利用优先队列PriorityQueue实现Prim算法
- 2017 年成为 Linux 专家的 4 个热门技能
- socketserver模块
- 程序编译过程
- Linux多线程编程之设置线程属性,设置线程分离属性
- Python 面试问答 Top 25
- 公开课 | Python在运维开发中的运用
- JPA
- scrapy在win10上安装(py3)
- Linux--根文件系统的解释
- 137. Single Number II
- 类型转换操作符函数