23.(C语言)编译和链接

简介: 23.(C语言)编译和链接

可执行程序是.exe

vs2022:是一个集成开发环境

一.翻译环境

多个.c文件经过编译器,生成对应目标文件,多个目标文件和链接库一起经过链接器,生              成.exe

编译器的3步走(iOS):预处理,编译,汇编

1.预处理

2.编译

把代码变为汇编语言

2.1词法分析

将源代码程序输入扫描器,对着16个记号进行识别

2.2语法分析

通过语法分析器,对扫描产生的记号进行语法分析,从而产生语法树,语法树是以表达式为节点的树,以下面这个式子为例

2.3语义分析

通过语义分析器来完成语义分析,编译器做的是静态分析,主要是针对类型的


3.汇编

汇编器将汇编代码转化为机器可执行的指令,汇编的命令如下

4.链接

链接的时候是把一堆文件链接在一起生成可执行程序

链接过程主要包括:地址和空间分配,符号决议和重定位等

例如说,函数的调用,主函数中也会储存被调用函数地址(例如记为0x0000),在将多个.c文件链接时,会发现实际上被调用函数的地址(0x0010),那么0x0010就会将0x0000删去覆盖它。

以add函数为例,链接根据引用符号add在其他模块中查找add函数的地址,然后将.c中所有引用到add的指令重新修正,让他们的目标地址为真正的add函数的地址。对于全局变量的修正也是类似的方法。这个地址修正的过程也被叫做:重定位

二.运行环境

1.程序必须载入内存中,在有操作系统的环境中执行

2.程序的执行便开始,接着便调用main函数

3.在内存上,处理各种变量,如局部全局变量,返回地址等

4.终止程序


相关文章
|
3月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
3月前
|
自然语言处理 编译器 Linux
【C语言篇】编译和链接以及预处理介绍(上篇)1
【C语言篇】编译和链接以及预处理介绍(上篇)
45 1
|
1月前
|
存储 自然语言处理 Unix
【C语言】C语言 4 个编译过程详解
编译是将源代码转换为目标代码的过程。它是在编译器的帮助下完成的。编译器检查源代码是否存在语法或结构错误,如果源代码没有错误,则生成目标代码。
53 1
|
3月前
|
存储 自然语言处理 编译器
|
3月前
|
编译器 Linux C语言
【C语言篇】编译和链接以及预处理介绍(下篇)
【C语言篇】编译和链接以及预处理介绍(下篇)
38 1
【C语言篇】编译和链接以及预处理介绍(下篇)
|
3月前
|
自然语言处理 编译器 Linux
C语言中抽象的编译和链接原理
C语言中抽象的编译和链接原理
30 1
|
3月前
|
存储 C语言
【C语言篇】编译和链接以及预处理介绍(上篇)2
【C语言篇】编译和链接以及预处理介绍(上篇)
42 0
|
1月前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
68 10
|
1月前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
52 9
|
1月前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
42 8