在linux中,交叉編譯是指在一個平臺上生成另一個平臺上的可執行代碼,即編譯源代碼的平臺和執行源代碼編譯后程序的平臺是兩個不同的平臺。使用交叉編譯的原因:1、目標系統沒有能力在其上進行本地編譯;2、有能力進行源代碼編譯的平臺與目標平臺不同。
本教程操作環境:.9.8系統、Dell G3電腦。
交叉編譯
所謂"交叉編譯()",是指編譯源代碼的平臺和執行源代碼編譯后程序的平臺是兩個不同的平臺。比如,在Intel x86架構/Linux()平臺下、使用交叉編譯工具鏈生成的可執行文件,在ARM架構/Linux下運行。
簡單地說,就是在一個平臺上生成另一個平臺上的 可執行代碼。同一個 體系結構可以運行不同的操作系統;同樣,同一個操作系統也可以在不同的體系結構上運行。
交叉編譯是相對復雜的中文系統編譯的程序在英文系統跑崩潰,必須考慮如下幾個問題:
為什么要使用交叉編譯呢?主要有兩個原因:
交叉編譯工具鏈是進行交叉編譯的必不可少的工具,是嵌入式開發人員必須熟練掌握的技能。
為什么交叉編譯很難?
便攜式本機編譯很困難。
大多數程序是在 x86 硬件上開發的中文系統編譯的程序在英文系統跑崩潰,在本地編譯的。交叉編譯會遇到兩種類型的問題:程序本身的問題和構建系統的問題。
第一類問題會影響所有非 x86 目標,包括本機和交叉構建。大多數程序對運行的機器類型做出假設,必須與相關平臺匹配,否則程序將無法運行。常見的假設包括:
大多數包的目標是在本地編譯時可移植,至少會接受補丁,修復提交到適當的開發郵件列表的任何上述問題(NOMMU 問題除外)。
然后是交叉編譯。
除了本機編譯的問題外,交叉編譯還有其自身的一系列問題: