当前位置: 首页 > news >正文

编译与运行环境(C语言)

文章目录

  • 前言
  • 编译环境
    • 编译
    • 链接
  • 运行环境

前言

C语言代码的实现,存在两种不同的环境。
第一种是翻译环境,在这个环境中,源代码被转换为可执行的二进制指令。
翻译环境即我们日常使用编译器,将一个 " mission.c " 的文件最终变成一个 " mission.exe " 的可执行文件的一个过程。
第二种是运行环境,它用于实际执行代码。
运行环境一般是由操作系统对 " mission.exe " 可执行文件进行解析执行的结果。
今天我讲带大家逐一了解这两种环境,话不多说让我们开始吧!

编译环境

C语言的编译和链接是将C语言源代码转换为可执行代码的过程。

编译

编译是将C语言源代码(.c文件)转换为汇编语言代码(.s文件),这个过程由编译器完成。编译器会对源代码进行语法检查、词法分析和语法分析,然后将源代码翻译成汇编语言代码。在编译过程中,编译器会检查语法错误、警告和优化代码。(编译还可以分为三部分:预编译 编译 汇编)

链接

链接是将汇编语言代码(.s文件)和库文件(.lib或.a文件)合并成可执行文件的过程。链接器会将不同的模块(即不同的源文件编译生成的汇编代码)合并成一个单一的可执行文件。在链接过程中,链接器会解析变量和函数的引用,并将它们连接到正确的地址。链接还会在可执行文件中增加必要的信息,如程序入口点等。

编译是将C语言源代码转换为汇编语言代码,链接是将汇编语言代码和库文件合并成可执行文件。这两个过程是将源代码转换为可执行程序的基础。

运行环境

运行环境就是程序执行的过程。
首先程序先是被操作系统载入到内存中。在独立的环境中,程序的载入也可能是通过可执行代码置入只读内存来完成。
然后程序运行开始,接着便调用 main 函数。
接着操作系统开始执行程序代码。这个时候程序将使用一个运行时堆栈,用来存储函数的局部变量和返回地址。程序同时也可以使用静态 (static) 内存,存储于静态内存中的变量在程序的整个执行过程一直保留它们的值。
最后终止程序。操作系统正常终止 main 函数,也有可能是意外终止。

http://www.lryc.cn/news/288651.html

相关文章:

  • 再谈Android View绘制流程
  • 分布式定时任务系列8:XXL-job源码分析之远程调用
  • python+Qt5 UOS 摄相头+麦克风测试,摄相头自动解析照片二维条码,麦克风解析音频文件
  • MongoDB日期存储与查询、@Query、嵌套字段查询实战总结
  • Windows版本Node.js常见问题及操作解决方式(小白入门必备)
  • 09.Elasticsearch应用(九)
  • ROS2常用命令工具
  • Linux之快速入门
  • C语言——操作符详解1
  • C++学习| QT快速入门
  • Android App开发-简单控件(1)——文本显示
  • [GYCTF2020]Ezsqli1
  • 【npm包】如何发布自己的npm包
  • 《WebKit技术内幕》学习之十五(2):Web前端的未来
  • 【教学类-综合练习-11】20240116 大4班 最后一次
  • 【阻塞队列】阻塞队列的模拟实现及在生产者和消费者模型上的应用
  • Cocos Creator使用VS Code调试代码配置
  • 【投稿优惠|EI优质会议】2024年材料化学与清洁能源国际学术会议(IACMCCE 2024)
  • ubuntu设置右键打开terminator、code
  • PHP AES加解密:用代码为数据加上保护的盾牌
  • Socket实现服务器和客户端
  • 智能GPT图书管理系统(SpringBoot2+Vue2)、接入GPT接口,支持AI智能图书馆
  • 面试经典 150 题 ---- 合并两个有序数组
  • 防火墙在企业园区出口安全方案中的应用(ENSP实现)
  • 单片机学习笔记---矩阵键盘密码锁
  • 8-小程序数据promise化、共享、分包
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • Threejs 展示——obj 格式模型导入
  • 深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net
  • C#使用RabbitMQ-2_详解工作队列模式