转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现

本文深入探讨了程序开发中转换环境与执行环境的区别,解释了为何需要区分二者,以及它们如何影响程序的编写与运行。同时,文章还介绍了宿主环境与独立环境的概念,以及宿主实现与独立实现的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 转换环境与执行环境

1.1 转换环境与执行环境的概念

转换环境 :程序转换时所处的环境(程序转换:指的是从源文件到可执行文件的转换,就是我们常说的编译),通俗点就是指程序转换时所用的计算机。

注意:计算机包括了 PC、工作站、服务器、手机、平板电脑、笔记本、单片机等等。

执行环境 :程序执行时所处的环境,通俗点就是指程序执行时所用的计算机。

转换环境和执行环境可能是相同的,比如:

  • 对于正在学习阶段的我们来说,肯定是在同一台PC上完成的对程序的转换和执行。
  • 这时,转换环境和执行环境就是相同的,它们都是我们所使用的这台PC。

大多数时候,转换环境和执行环境并不相同,比如:

  • 开发一款商业软件,我们需要在自己的PC上完成转换工作,而程序的执行却是在用户的PC上。
  • 这时,转换环境和执行环境就可能是不相同的。
  • 转换环境就是你所使用的PC、执行环境就是用户所使用的PC。

1.2 为什么要区分转换环境和执行环境

不同的环境具有不同的软硬件配置(不同的CPU架构、不同的操作系统、不同的字符集 等等),比如:手机的处理器可能是ARM架构、PC的处理器可能是X86架构。

如果我们用手机编写一个在手机上运行的软件是很麻烦的,因为,手机屏幕太小了,操作起来非常的不方便。所以,我们通常是在PC上建立一个手机仿真环境,然后在PC上编写和转换要在手机上执行的程序。这时,这个程序的转换环境就是PC,执行环境就是手机。

很显然,如果我们根据转换环境来编写和转换程序的话,由于转换环境和执行环境的CPU架构、操作系统等等都是不同的。那么,这个程序只能运行在PC上,而不能运行在手机上,这明显违背了我们的预期。所以呢,在写程序前,我们需要考虑它的执行环境到底是怎么样的,我们只能根据执行环境来编写和转换程序,这样才能达到我们的预期。这就是我们区分转换环境和执行环境的原因。


2 宿主环境和独立环境

执行环境分为两种:分别是宿主环境和独立环境。

2.1 宿主环境

程序的执行需要依靠操作系统、或者其它软件的支撑。那么,这个程序的执行环境就是宿主环境。
比如:PC上的程序,它的执行环境就是宿主环境(操作系统内核除外)。

2.2 独立环境

程序的执行不需要依靠操作系统、或者其它软件的支撑。那么,这个程序的执行环境就是独立环境。
比如:单片机上的程序,它的执行环境就是独立环境。

一个程序的执行环境到底是宿主环境、还是独立环境,是由程序是否可以独立运行来决定的。


3 宿主实现、独立实现

3.1 宿主实现

宿主实现:转换(执行环境为宿主环境的程序)的实现,比如:gcc。

宿主实现可以接受任何严格依从C标准的C程序。

3.2 独立实现

独立实现:转换(执行环境为独立环境的程序)的实现。比如:keil --> 类似于CodeBlocks的集成开发环境 --> 专门用来为单片机开发软件的 --> 它内置了C实现。

独立实现可以接受任何严格依从C标准的C程序,但程序不能使用绝大多数的库,只能使用以下头文件中的内容:
<float.h> <iso646.h> <limits.h> <stdalign.h> <stdarg.h>
<stdbool.h> <stddef.h> <stdint.h> <stdnoreturn.h>

为什么呢?
因为(执行环境为独立环境的程序),它的运行不依靠操作系统。而标准库中的很多库函数都依赖于操作系统,所以程序不能使用绝大多数的库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值