C语言编译流程

简介:

 

 

无论是高级程序设计语言还是专用程序设计语言,都不能被计算机系统直接识别,用这些语言所编写的程序代码称为源程序,源程序需要通过预先设计好的专用程序进行转换,转换为计算机系统可以识别的机器指令,然后才能交由计算机系统执行。

编辑是程序员通过编辑软件录入源代码的过程。
编译是文件录入后,使用编译程序对源文件进行编译,目标文件已经是二进制的机器代码了。
一方面有些程序使用频率高,一般程序员难以自行开发,因此编译系统通常将这些功能预先编译好,以程序库的形式提供给程序员使用。
另一方面,待开发的程序可能不只一个源文件组成,而是由多个源文件构成的,经过编译后,每个源文件生成一个不完整的目标文件,将这些目标文件拼在一起,才能构成整个目标文件。
链接过程就是对组成整个程序的各个目标文件,程序库进行封装,生成最终的目标程序的过程。

 

C语言编译流程:

预处理-->编译-->汇编-->链接 -->a.out

预处理是把宏定义的指令信息拷贝到源程序中,进行头文件替换,不检查语法错误。

可以通过gcc编译命令【gcc -E  源文件(.c) -o 生成文件(.i)】 生成.i文件查看。

编译通过gcc编译命令[gcc -S 预处理文件(.i文件)]命令编译,这时会检查语法错误。生成.s文件。

汇编把文本文件编译成机器的二进制文件。通过gcc命令【gcc -c .s文件】,生成.o的文件。

链接是把多个.o的文件,链接成一个可执行的动态文件。输出.out文件。

目录
相关文章
|
1月前
|
Ubuntu C语言
在Ubuntu下使用makefile编译C语言工程
在Ubuntu下使用makefile编译C语言工程
|
2月前
|
存储 自然语言处理 编译器
C语言从入门到实战——编译和链接
在C语言中,编译和链接是将源代码转换为可执行文件的两个主要步骤。 编译过程包括以下步骤: 1. 预处理:将源代码中的预处理指令(如`#include`和`#define`)替换为实际的代码。 2. 编译:将预处理后的代码转换为汇编语言。 3. 汇编:将汇编语言转换为机器码指令。 链接过程包括以下步骤: 1. 目标文件生成:将每个源文件编译后生成的目标文件(`.o`或`.obj`)进行合并,生成一个总的目标文件。 2. 符号解析:查找并解析目标文件中的所有符号(例如全局变量和函数名),以确保每个符号都有一个唯一的地址。 3. 地址重定位:根据符号表中符号的地址信息,将目标文件中的所有地址引用
43 0
|
2天前
|
存储 自然语言处理 编译器
C语言:编译与链接
C语言:编译与链接
6 1
|
3天前
|
存储 自然语言处理 编译器
“ Hello world ”中的秘密之【C语言程序编译和链接】
作为C语言最经典的代码,大家都可以轻易写出。但是代码的运行过程却很少有人清楚,接下来我将介绍代码运行的奥秘。
15 0
|
5天前
|
自然语言处理 编译器 C语言
C语言程序编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。
|
17天前
|
存储 自然语言处理 编译器
C语言:编译和链接(从.c文件到输出结果的过程)
C语言:编译和链接(从.c文件到输出结果的过程)
|
1月前
|
存储 自然语言处理 编译器
编译和链接---C语言
编译和链接---C语言
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译和链接深度剖析
【C语言】编译和链接深度剖析
|
1月前
|
Linux 开发工具 C语言
C语言编译过程、VIM常用命令
C语言编译过程、VIM常用命令
|
2月前
|
存储 机器学习/深度学习 自然语言处理
【进阶C语言】编译与链接、预处理符号详解
【进阶C语言】编译与链接、预处理符号详解
28 0