转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现
文章目录
- 1 转换环境与执行环境
- 1.1 转换环境与执行环境的概念
- 1.2 为什么要区分转换环境和执行环境
- 2 宿主环境和独立环境
- 2.1 宿主环境
- 2.2 独立环境
- 3 宿主实现、独立实现
- 3.1 宿主实现
- 3.2 独立实现
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>
为什么呢?
因为(执行环境为独立环境的程序),它的运行不依靠操作系统。而标准库中的很多库函数都依赖于操作系统,所以程序不能使用绝大多数的库。
转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现相关推荐
- 程序环境——翻译环境与执行环境
本篇重点: 程序的翻译环境和执行环境 详解翻译环境中的 编译+链接 程序的翻译环境和执行环境 在ANSI的任何一种实现中,存在两个不同的环境. 翻译环境,在这个环境中源代码被转换为可执行的机器指令. ...
- C语言程序设计 | 程序环境和预处理:翻译环境和执行环境、宏、条件编译
程序环境和预处理: 翻译环境和执行环境 宏 条件编译 翻译环境和执行环境 在ANSI C的任何一种实现中,存在两种不同的环境. 第一种是翻译环境,在这个环境中源代码被转换成可执行的机器指令.第二种是执 ...
- 简单介绍程序的翻译环境和执行环境
前言:我们常常在程序中看到编译,链接,执行,但是你真的了解过它们吗?作为一名未来的合格的程序员,应当能够对它们有清晰的认知.本文就将对它们进行浓缩精炼的介绍,让你面对它们的时候不再感到迷惑. 想要深入 ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- 启动R环境并执行R脚本
启动R环境并执行R脚本 # 打开window系统本身的cmd或者anaconda prompt # 输入R,就会进入R console环境: R可以用'demo()'来看一些示范程序,用'help() ...
- 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )
如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于MatlabR2015b版) 关键字:MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 ...
- Linux 中/etc/profile、~/.bash_profile 环境变量执行过程
在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的~/.bash_profile: ~/.bash_login或 ~/.p ...
- DPDK在Linux用户级执行环境中执行EAL
目录 在Linux用户级执行环境中进行EAL 初始化和核心启动 关机和清理 多进程支持 内存映射发现和内存保留 支持外部分配的内存 每个核心和共享变量 日志 CPU功能识别 用户空间中断事件 黑名单 ...
- conda添加清华镜像源在cmd环境下执行下列命令
为conda添加清华镜像源在cmd环境下执行下列命令 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda ...
最新文章
- android中DatePicker和TimePicker的使用
- [小功能]按阅读数、评论数、评论时间查看首页随笔
- php微信小程序获取用户信息,微信小程序获取openid及用户信息的方法
- 计算机二级web题目(8.3)--简单应用题2
- 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
- 非阻塞I/O多路复用机制
- 随想录(由自定义打印函数想到的)
- python官网下载文件-使用Python下载文件的简单示例
- 挖掘11亿用户背后的产品逻辑之美
- 简述Flash 事件机制?
- 无人超市的核心不在于代替人,而是一款赚钱的互联网产品,是互联网伸向现实世界的
- python中close_python close()是什么?python close()定义及用法详解
- 小程序:emoji等表情base64后乱码解决方案
- 三级等保 关闭111端口
- 携手NVIDIA等40余家国内外伙伴,飞桨硬件生态狂飙
- mysql limit会扫描全表_为什么用了limit还会进行全表扫描?
- 【报告分享】小红书品牌营销白皮书2021半年报-新红数据(附下载)
- 2017今日头条校招——或与加
- 【JAVA大厂面试必问】大厂面试八股文整理, 中厂小厂也爱问的八股文!
- JavPlayer 109 1.09 AI破坏马赛克