什麼是交叉編譯鏈
明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。
首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖:
那麼編譯過程包括了預處理、編譯、彙編、鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。
同時編譯過程又是乙個有先後順序的流程,它必然牽涉到工具的使用順序,每個工具按照先後關係串聯在一起,這就形成了乙個鏈式結構。
因此,交叉編譯鏈就是為了編譯跨平台體系結構的程式**而形成的由多個子工具構成的一套完整的工具集。同時,它隱藏了預處理、編譯、彙編、鏈結等細節,當我們指定了原始檔(.c)時,它會自動按照編譯流程呼叫不同的子工具,自動生成最終的二進位制程式映像(.bin)。
交叉編譯鏈的命名規則
我們使用交叉編譯鏈時,常常會看到這樣的名字:
arm-none
-linux
-gnueabi
-gcc
arm-cortex_a8
-linux
-gnueabi
-gcc
mips-malta
-linux
-gnu
-gcc
其中,對應的字首為:
arm-none
-linux
-gnueabi
-arm-cortex_a8
-linux
-gnueabi
-mips-malta
-linux
-gnu
-
這些交叉編譯鏈的命名規則似乎是通用的,有一定的規則:
arch-core
-kernel
-system
arch: 用於哪個目標平台。
core: 使用的是哪個cpu core,如cortex a8,但是這一組命名好像比較靈活,在其它廠家提供的交叉編譯鏈中,有以廠家名稱命名的,也有以開發板命名的,或者直接是none或cross的。
kernel: 所執行的os,見過的有linux,uclinux,bare(無os)。
systen:交叉編譯鏈所選擇的庫函式和目標映像的規範,如gnu,gnueabi等。其中gnu等價於glibc+oabi;gnueabi等價於glibc+eabi。
交叉編譯工具鏈
交叉編譯工具鏈 交叉編譯 就是在一種平台上編譯出能執行在體系結構不同的另一種平台上的程式 比如在pc平台 x86 cpu 上編譯出能執行在以arm為核心的cpu平台上的程式,編譯得到的程式在x86 cpu平台上是不能執行的,必須放到arm cpu平台上才能執行,雖然兩個平台用的都是linux系統 交...
製作交叉編譯工具鏈 2
解壓crosstool ng tar jxvf crosstool ng 1.23.0 檢查依賴,完成依賴檢查後生成makefile configure prefix home forlinx crosstool install 編譯,編譯成功後進行安裝 make make install 新增環境...
交叉編譯和交叉工具鏈(一)
一 交叉編譯簡介 1 什麼是交叉編譯 1.1 本地編譯 解釋什麼是交叉編譯之前,先要明白乙個概念 本地編譯 我們之前常見的軟體開發,都是屬於本地編譯 在當前的pc下,x86的cpu下,直接編譯出來程式,可以執行的程式 或者庫檔案 其可以直接在當前的環境,即x86的cpu下,當前電腦中,執行。此時的編...