C语言代码到可执行文件的过程

简介: 我们写好的代码是不能直接运行的,想要运行需要预编译、编译、汇编、链接四大步骤变成可执行目标文件,本文将简单介绍这四大步骤。

1.预编译:

步骤:

(1)处理#开头的指令,比如#define、#if、#ifdef,其中不包含#pragma

(2)删除所有的注释

(3)添加行号文件标识

文件转换:.c->.i


2.编译:

步骤:

(1)词法分析

(2)语法分析

(3)语义分析

(4)源代码优化

(5)代码生成

(6)目标代码优化

文件转换:.i->.s


3.汇编:

步骤:

(1)将汇编代码转成机器可以执行的指令,生成可重定向目标文件

文件转换:

Windows:.s->.obj

Linux:.s->.o


4.链接:

步骤:

(1)将所有的.o文件段合并,其中符号表合并后会进行符号解析

(2)地址空间和分配

(3)符号的重定向

文件转换:

Windows下:obj->.exe

Linux下:.o->.out

相关文章
|
13天前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
13天前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
|
24天前
|
存储 搜索推荐 C语言
深入C语言指针,使代码更加灵活(二)
深入C语言指针,使代码更加灵活(二)
|
24天前
|
存储 程序员 编译器
深入C语言指针,使代码更加灵活(一)
深入C语言指针,使代码更加灵活(一)
|
24天前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(三)
【C语言】探索文件读写函数的全貌
|
1月前
|
存储 C语言
【C语言】探索文件读写函数的全貌(二)
【C语言】探索文件读写函数的全貌
|
2月前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
46 4
|
29天前
|
C语言
C语言练习题代码
C语言练习题代码
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(一)
【C语言】探索文件读写函数的全貌