-
交叉編譯一般是指編譯在非本地機器上執行的**。
通俗地說,就是編譯執行在其他機器上的**,而這些機器的CPU指令集與編譯機的CPU指令集不同,所以編譯後的**不能直接在編譯器上執行。
編譯機一般需要虛擬機器的幫助來執行編譯後的**;
最常見的交叉編譯是在PC上開發移動應用,手機使用的CPU和作業系統一般與root編譯器不同。 我們編譯的移動應用程式不乏可以直接在 Windows 或 Linux 下執行,並且只能通過安裝在 PC 上的虛擬機器執行。
-
交叉編譯的概念(來自百科全書):
簡單地說,就是在乙個平台上生成另乙個平台上的可執行檔案。 相同的架構可以執行不同的作業系統; 同樣,相同的作業系統可以在不同的體系結構上執行。 比如我經常誤判的 x86 Linux 平台,其實是 Intel x86 架構和 Linux for x86 作業系統的統稱; x86 winnt 平台實際上是 Intel x86 架構和 Windows NT for x86 作業系統的縮寫。
例如,在 Ubuntu 等 Linux 系統上編寫的 C 程式可以在 Windows 系統上完美執行。
-
在乙個平台架構上編譯可執行檔案是交叉編譯。
例如,在 x86 PC 上為 ARM 嵌入式裝置編譯可執行程式。
交叉編譯是必要的,首先,當目標裝置的系統還沒有啟動時,可以編譯目標平台的引導載入程式,顯然只能進行交叉編譯。
此外,由於目標裝置通常太低而無法安裝編譯器,或者幾乎沒有安裝,因此它也像蝸牛一樣慢。
-
交叉編譯概念的出現和流行與嵌入式系統的廣泛發展相吻合。 我們常用的計算機軟體,需要通過將用高階計算機語言編寫的**(如C**)編譯成計算機可以識別和執行的二進位**來編譯。 例如,在Windows平台上,我們可以使用Visual C++開發環境來編寫程式並將它們編譯成可執行程式。
這樣,我們就使用PC平台上的Windows工具,為Windows本身開發可執行程式,這個編譯過程叫做原生編譯,中文可以理解為原生編譯。
但是,在開發嵌入式系統時,執行程式的目標平台通常儲存空間和計算能力有限,例如常見的ARM平台,其靜態儲存空間一般在16到32MB左右,而CPU時鐘速度在100MHz到500MHz左右。 在這種情況下,在ARM平台上進行原生編譯是不可能的,因為通用的編譯工具鏈需要大量的儲存空間,並且需要大量的CPU算力。
為了解決這個問題,交叉編譯工具應運而生。 通過交叉編譯工具,我們可以在CPU能力強、儲存空間充足的主機平台(如PC)上為其他平台編譯可執行程式。
要進行交叉編譯,我們需要在主機平台上安裝相應的交叉編譯工具鏈,然後使用這個交叉編譯工具鏈來編譯我們的原始碼,最後生成可以在目標平台上執行的**。
-
交叉編譯。
1. 在Windows PC上,使用ADS(ARM開發環境)和ARMC編譯器,可以編譯ARM CPU的可執行檔案。
2. 在 Linux PC 上,可以使用 arm-linux-gcc 編譯器來編譯 Linux ARM 平台的可執行檔案。
3. 在 Windows PC 上,使用 cygwin 環境執行 arm-elf-gcc 編譯器,為 arm CPU 編譯可執行檔案。
4. 在 Windows 系統上,執行在 89C51 微控制器上的程式是使用 Keil Uvison 工具開發的。
5. 在Windows系統上,使用CodeWarrior IDE工具開發執行在飛思卡爾XS128微控制器上的程式。
我也是電子專業的,外圍一些硬體電路的控制一定要按照晶元的底層模板程式來做,就像規定必須這樣做一樣,但是底層程式必須自己連線起來,有利於程式的靈活應用,這方面人才還是比較多的, 但是精通的人不多,接觸大型程式編寫、程式演算法的人比較多,前景還是不錯的,加油!!
51機串列埠低電平以下,高電平5V以下,PC串列埠低電平-12V,高電平+12V,51機與PC機之間的串列埠通訊應加電平轉換IC >>>More