文章目录

  • 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>

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

转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现相关推荐

  1. 程序环境——翻译环境与执行环境

    本篇重点: 程序的翻译环境和执行环境 详解翻译环境中的 编译+链接 程序的翻译环境和执行环境 在ANSI的任何一种实现中,存在两个不同的环境. 翻译环境,在这个环境中源代码被转换为可执行的机器指令. ...

  2. C语言程序设计 | 程序环境和预处理:翻译环境和执行环境、宏、条件编译

    程序环境和预处理: 翻译环境和执行环境 宏 条件编译 翻译环境和执行环境 在ANSI C的任何一种实现中,存在两种不同的环境. 第一种是翻译环境,在这个环境中源代码被转换成可执行的机器指令.第二种是执 ...

  3. 简单介绍程序的翻译环境和执行环境

    前言:我们常常在程序中看到编译,链接,执行,但是你真的了解过它们吗?作为一名未来的合格的程序员,应当能够对它们有清晰的认知.本文就将对它们进行浓缩精炼的介绍,让你面对它们的时候不再感到迷惑. 想要深入 ...

  4. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  5. 启动R环境并执行R脚本

    启动R环境并执行R脚本 # 打开window系统本身的cmd或者anaconda prompt # 输入R,就会进入R console环境: R可以用'demo()'来看一些示范程序,用'help() ...

  6. 如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于Matlab R2015b版 )

    如何将MATLAB程序发布为独立的不依赖MATLAB环境可执行的程序包(基于MatlabR2015b版) 关键字:MatlabR2015b,可独立运行,可脱离Matlab环境,m文件,Matlab程序 ...

  7. Linux 中/etc/profile、~/.bash_profile 环境变量执行过程

    在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的~/.bash_profile: ~/.bash_login或 ~/.p ...

  8. DPDK在Linux用户级执行环境中执行EAL

    目录 在Linux用户级执行环境中进行EAL 初始化和核心启动 关机和清理 多进程支持 内存映射发现和内存保留 支持外部分配的内存 每个核心和共享变量 日志 CPU功能识别 用户空间中断事件 黑名单 ...

  9. conda添加清华镜像源在cmd环境下执行下列命令

    为conda添加清华镜像源在cmd环境下执行下列命令 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda ...

最新文章

  1. android中DatePicker和TimePicker的使用
  2. [小功能]按阅读数、评论数、评论时间查看首页随笔
  3. php微信小程序获取用户信息,微信小程序获取openid及用户信息的方法
  4. 计算机二级web题目(8.3)--简单应用题2
  5. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
  6. 非阻塞I/O多路复用机制
  7. 随想录(由自定义打印函数想到的)
  8. python官网下载文件-使用Python下载文件的简单示例
  9. 挖掘11亿用户背后的产品逻辑之美
  10. 简述Flash 事件机制?
  11. 无人超市的核心不在于代替人,而是一款赚钱的互联网产品,是互联网伸向现实世界的
  12. python中close_python close()是什么?python close()定义及用法详解
  13. 小程序:emoji等表情base64后乱码解决方案
  14. 三级等保 关闭111端口
  15. 携手NVIDIA等40余家国内外伙伴,飞桨硬件生态狂飙
  16. mysql limit会扫描全表_为什么用了limit还会进行全表扫描?
  17. 【报告分享】小红书品牌营销白皮书2021半年报-新红数据(附下载)
  18. 2017今日头条校招——或与加
  19. 【JAVA大厂面试必问】大厂面试八股文整理, 中厂小厂也爱问的八股文!
  20. JavPlayer 109 1.09 AI破坏马赛克

热门文章

  1. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第1章-绪论
  2. 【控制】盖尔圆盘定理
  3. PyTorch cat() 函数实现维度拼接
  4. STM32 电机教程 6 - 步进电机转动控制
  5. TMAXug ATPG Design Flow
  6. Android 重新编译资源文件
  7. ubuntu10.10各种服务器搭建
  8. swift 用协议实现代理传值功能
  9. Android 环境搭建的错误解决方案
  10. SecureCRT中Python脚本编写学习指南