转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现
文章目錄
- 1 轉(zhuǎn)換環(huán)境與執(zhí)行環(huán)境
- 1.1 轉(zhuǎn)換環(huán)境與執(zhí)行環(huán)境的概念
- 1.2 為什么要區(qū)分轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境
- 2 宿主環(huán)境和獨立環(huán)境
- 2.1 宿主環(huán)境
- 2.2 獨立環(huán)境
- 3 宿主實現(xiàn)、獨立實現(xiàn)
- 3.1 宿主實現(xiàn)
- 3.2 獨立實現(xiàn)
1 轉(zhuǎn)換環(huán)境與執(zhí)行環(huán)境
1.1 轉(zhuǎn)換環(huán)境與執(zhí)行環(huán)境的概念
轉(zhuǎn)換環(huán)境 :程序轉(zhuǎn)換時所處的環(huán)境(程序轉(zhuǎn)換:指的是從源文件到可執(zhí)行文件的轉(zhuǎn)換,就是我們常說的編譯),通俗點就是指程序轉(zhuǎn)換時所用的計算機。
注意:計算機包括了 PC、工作站、服務器、手機、平板電腦、筆記本、單片機等等。
執(zhí)行環(huán)境 :程序執(zhí)行時所處的環(huán)境,通俗點就是指程序執(zhí)行時所用的計算機。
轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境可能是相同的,比如:
- 對于正在學習階段的我們來說,肯定是在同一臺PC上完成的對程序的轉(zhuǎn)換和執(zhí)行。
- 這時,轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境就是相同的,它們都是我們所使用的這臺PC。
大多數(shù)時候,轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境并不相同,比如:
- 開發(fā)一款商業(yè)軟件,我們需要在自己的PC上完成轉(zhuǎn)換工作,而程序的執(zhí)行卻是在用戶的PC上。
- 這時,轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境就可能是不相同的。
- 轉(zhuǎn)換環(huán)境就是你所使用的PC、執(zhí)行環(huán)境就是用戶所使用的PC。
1.2 為什么要區(qū)分轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境
不同的環(huán)境具有不同的軟硬件配置(不同的CPU架構(gòu)、不同的操作系統(tǒng)、不同的字符集 等等),比如:手機的處理器可能是ARM架構(gòu)、PC的處理器可能是X86架構(gòu)。
如果我們用手機編寫一個在手機上運行的軟件是很麻煩的,因為,手機屏幕太小了,操作起來非常的不方便。所以,我們通常是在PC上建立一個手機仿真環(huán)境,然后在PC上編寫和轉(zhuǎn)換要在手機上執(zhí)行的程序。這時,這個程序的轉(zhuǎn)換環(huán)境就是PC,執(zhí)行環(huán)境就是手機。
很顯然,如果我們根據(jù)轉(zhuǎn)換環(huán)境來編寫和轉(zhuǎn)換程序的話,由于轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境的CPU架構(gòu)、操作系統(tǒng)等等都是不同的。那么,這個程序只能運行在PC上,而不能運行在手機上,這明顯違背了我們的預期。所以呢,在寫程序前,我們需要考慮它的執(zhí)行環(huán)境到底是怎么樣的,我們只能根據(jù)執(zhí)行環(huán)境來編寫和轉(zhuǎn)換程序,這樣才能達到我們的預期。這就是我們區(qū)分轉(zhuǎn)換環(huán)境和執(zhí)行環(huán)境的原因。
2 宿主環(huán)境和獨立環(huán)境
執(zhí)行環(huán)境分為兩種:分別是宿主環(huán)境和獨立環(huán)境。
2.1 宿主環(huán)境
程序的執(zhí)行需要依靠操作系統(tǒng)、或者其它軟件的支撐。那么,這個程序的執(zhí)行環(huán)境就是宿主環(huán)境。
比如:PC上的程序,它的執(zhí)行環(huán)境就是宿主環(huán)境(操作系統(tǒng)內(nèi)核除外)。
2.2 獨立環(huán)境
程序的執(zhí)行不需要依靠操作系統(tǒng)、或者其它軟件的支撐。那么,這個程序的執(zhí)行環(huán)境就是獨立環(huán)境。
比如:單片機上的程序,它的執(zhí)行環(huán)境就是獨立環(huán)境。
一個程序的執(zhí)行環(huán)境到底是宿主環(huán)境、還是獨立環(huán)境,是由程序是否可以獨立運行來決定的。
3 宿主實現(xiàn)、獨立實現(xiàn)
3.1 宿主實現(xiàn)
宿主實現(xiàn):轉(zhuǎn)換(執(zhí)行環(huán)境為宿主環(huán)境的程序)的實現(xiàn),比如:gcc。
宿主實現(xiàn)可以接受任何嚴格依從C標準的C程序。
3.2 獨立實現(xiàn)
獨立實現(xiàn):轉(zhuǎn)換(執(zhí)行環(huán)境為獨立環(huán)境的程序)的實現(xiàn)。比如:keil --> 類似于CodeBlocks的集成開發(fā)環(huán)境 --> 專門用來為單片機開發(fā)軟件的 --> 它內(nèi)置了C實現(xiàn)。
獨立實現(xiàn)可以接受任何嚴格依從C標準的C程序,但程序不能使用絕大多數(shù)的庫,只能使用以下頭文件中的內(nèi)容:
<float.h> <iso646.h> <limits.h> <stdalign.h> <stdarg.h>
<stdbool.h> <stddef.h> <stdint.h> <stdnoreturn.h>
為什么呢?
因為(執(zhí)行環(huán)境為獨立環(huán)境的程序),它的運行不依靠操作系統(tǒng)。而標準庫中的很多庫函數(shù)都依賴于操作系統(tǒng),所以程序不能使用絕大多數(shù)的庫。
總結(jié)
以上是生活随笔為你收集整理的转换环境与执行环境、宿主环境与独立环境、宿主实现与独立实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10怎么设置图片查看器 如何在wi
- 下一篇: C语言和C实现