在嵌入式開發(fā)中,經(jīng)常會遇到目標(biāo)平臺資源貧乏,無法運行需要的編譯器。亦或是目標(biāo)平臺上不允許或不能夠安裝需要的編譯器。這時候就需要使用交叉編譯了。
交叉編譯
本地編譯:在當(dāng)前目標(biāo)平臺下,編譯出來的程序,放到當(dāng)前平臺下,就可以運行的
交叉編譯:在一種平臺上編譯,編譯出來的程序,放到別的平臺上運行(編譯和運行環(huán)境不一樣,屬于交叉的)
這里所謂的平臺,實際上包含兩個概念:體系結(jié)構(gòu)和操作系統(tǒng)。同一體系結(jié)構(gòu)可以運行不同的操作系統(tǒng),同一操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運行。
比如x86 Linux平臺,實際上是Intel x86體系結(jié)構(gòu)和Linux for x86操作系統(tǒng)的統(tǒng)稱。
再比如x86 WinNT平臺,實際上是Intel x86體系結(jié)構(gòu)和Windows NT for x86操作系統(tǒng)的統(tǒng)稱。
交叉編譯是一個和本地編譯,相對應(yīng)的概念。主要和嵌入式開發(fā)有關(guān),由于嵌入式系統(tǒng)中的各種資源相對有限,只夠嵌入式系統(tǒng)運行的,沒太多剩余的資源,所以很難進行直接的本地編譯。
交叉編譯工具鏈
編譯過程是按照不同的子功能,依照先后順序組成的一個復(fù)雜的流程,如下圖:
編譯過程包括了預(yù)處理、編譯、匯編、鏈接等功能。每個子功能都是一個單獨的工具來實現(xiàn),它們合在一起形成了一個完整的工具集。
同時編譯過程又是一個有先后順序的流程,牽涉到工具的使用順序,每個工具按照先后關(guān)系串聯(lián)在一起,形成了一個編譯工具鏈。
交叉編譯工具鏈就是為了編譯跨平臺體系結(jié)構(gòu)的程序代碼而形成的由多個子工具構(gòu)成的一套完整的工具集。
同時,它隱藏了預(yù)處理、編譯、匯編、鏈接等細(xì)節(jié),當(dāng)我們指定了源文件(.c)時,它會自動按照編譯流程調(diào)用不同的子工具,自動生成最終的二進制程序映像(.bin)。
交叉編譯工具鏈命名規(guī)則:
在使用交叉編譯鏈時,常常會看到下面這樣的名字:
arm-linux-gnueabihf- arm-none-linux-gnueabi- arm-cortex_a8-linux-gnueabi- mips-malta-linux-gnu-
這些交叉編譯鏈的命名通常會遵循一定的規(guī)則:arch-vender-os-abi,各字段說明如下:
arch:目標(biāo)cpu架構(gòu),比如mips、arm、x86、riscv等,通常不會省略
vendor:提供此編譯工具鏈的廠商名稱或特定信息,標(biāo)識信息,沒有實際意義,可以為none、cross、unknow或是直接省略
os:目標(biāo)設(shè)備上運行的操作系統(tǒng),常見的有l(wèi)inux、none(裸機)等
abi:應(yīng)用程序二進制接口,交叉編譯鏈所選擇的庫函數(shù)和目標(biāo)映像的規(guī)范,常見的值有abi 、eabi(embedded abi)、gun(glibc+oabi)、gnueabi(glibc+eabi)、gnueabihf(hf 指默認(rèn)編譯參數(shù)支持硬件浮點功能)等
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5127文章
19457瀏覽量
313546 -
Linux
+關(guān)注
關(guān)注
87文章
11432瀏覽量
212460 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7033瀏覽量
124796 -
交叉編譯
+關(guān)注
關(guān)注
0文章
32瀏覽量
12807
原文標(biāo)題:什么是交叉編譯?為什么需要交叉編譯?
文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
嵌入式開發(fā)入門之旅
嵌入式開發(fā)入門之旅
嵌入式開發(fā)工具使用
交叉調(diào)試器嵌入式開發(fā)的流程步驟
嵌入式開發(fā)流程
嵌入式開發(fā)流程是怎樣的?
嵌入式開發(fā)

嵌入式交叉編譯環(huán)境的搭建解析
干貨:嵌入式Ubuntu實踐之交叉編譯環(huán)境的建立
嵌入式開發(fā)(一):嵌入式開發(fā)新手入門

嵌入式開發(fā)資料免費分享

【嵌入式實驗】《嵌入式開發(fā)工具使用》

嵌入式開發(fā)Linux入門

嵌入式開發(fā)(一):嵌入式開發(fā)新手入門(轉(zhuǎn)載后續(xù)需要修改補充)

評論