转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现
文章目錄
- 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>
為什么呢?
因為(執行環境為獨立環境的程序),它的運行不依靠操作系統。而標準庫中的很多庫函數都依賴于操作系統,所以程序不能使用絕大多數的庫。
總結
以上是生活随笔為你收集整理的转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么设置图片查看器 如何在wi
- 下一篇: C语言和C实现