關於交叉編譯

2021-09-30 06:52:55 字數 1268 閱讀 6407

關於交叉編譯

交叉編譯通俗地講就是在一種平台上編譯出能執行在體系結構不同的另一種平台上,比

如在我們地pc平台(x86 cpu)上編譯出能執行在sparc

cpu平台上的程式,編譯得到的程式在x86 cpu平台上是不能執行的,必須放到sparc cpu平台上才能執行。當然兩個平台用的都是linux

這種方法在異平台移植和嵌入式開發時用得非常普遍

相對與交叉編譯,我們平常做的編譯就叫本地編譯,也就是在當前平台編譯,編譯得到

的程式也是在本地執行

用來編譯這種程式的編譯器就叫交叉編譯器,相對來說,用來做本地編譯的就叫本地編

譯器,一般用的都是gcc,但這種gcc跟本地的gcc編譯器

是不一樣的,需要在編譯gcc時用特定的configure引數才能得到支援交叉編譯的gcc

為了不跟本地編譯器混淆,交叉編譯器的名字一般都有字首,比如sparc-***x-linux-gn

u-gcc,sparc-***x-linux-gnu-g++ 等等

交叉編譯器的使用方法

使用方法跟本地的gcc差不多,但有一點特殊的是:必須用-l和-i引數指定編譯器用spar

c系統的庫和標頭檔案,不能用本地(x86)的庫(標頭檔案有時可以用本地的)

例子:sparc-***x-linux-gnu-gcc test.c -l/path/to/sparclib -i/path/to/sparcinclude

gcc與g++

由於軟體專案越來越大,也增加了軟體專案管理的難度。在開發組中,每個成員都要保留乙個副本,在開發中非常容易引起衝突。cvs 就是為了解決這個問題的。

a、修改同步,防止一名開發人員的修改覆蓋其他人的成果。(check out、read only)

b、維護不同的版本。(按 version 查詢)

c、可查詢歷史記錄。防止 bug 的再引入。(diff)

cvs 為了解決這個問題,採用的方式是:

當開發人員對源**進行修改時,修改的內容被登記(check in)到了 cvs 倉庫(repository)中。倉庫中儲存了**的主控副本,以及歷次修改的歷史資訊。它不儲存檔案的每個版本,而只是簡單的記錄發生在每個版本間的不 同,節省磁碟空間。它能做到:

a、使開發人員的目錄和倉庫保持一致。可以把自己的修改提交(commit)給倉庫,讓倉庫更新自己。

b、允許**派生。可以進行測試,如果失敗,可以消除所做的修改,維持原結果。

c、檢索任何乙個版本。

關於交叉編譯的概述

交叉編譯是在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統 同樣,同乙個作業系統也可以在不同的體系結構上執行。例如 在ubuntu linux 上編寫樹莓派的 並編譯成可執行 在樹莓派上執行,而不是在unbuntu linux 上執行。要分清楚編譯與交叉編譯的區別,編譯是在...

編譯 交叉編譯

交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...

交叉編譯(2) 交叉編譯鏈

什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...