從知道 Cross Compile 這個名詞以來,就看過這三個參數不知道幾次了,但除了剛開始時有想過這個問題之外,後來就沒仔細了解。這個問題是,這三個參數到底是有什麼差別?以自己的經驗,使用最多也只會的是 --host 這個參數(當要對某個程式做 cross compile 時用的),其他我還真的不了解怎麼用!今天總算對它們比較了解!
首先,根據不同的組合,它們有不同的名稱:
Native compiler: --build, --host, --target 都一樣
例:--build=x86 --host=x86 --target=x86
Cross compiler: --build 和 --host 一樣但 --target 不同
例:--build=SH --host=SH --target=ARM
Crossback compiler: --build 和 --target 一樣但 --host 不同
例:--build=x86 --host=MIPS --target=x86
Crossed native compiler: --host 和 --target 一樣但 --build 不同
例:--build=PPC --host=SPARC --target=SPARC
Canadian compiler: --build, --host, --target 都不一樣
例:--build=ARM --host=SH --target=MIPS
接著是它們的意義,我們要先知道 build, host 和 target 是什麼意思?build 指的是你用來建構 GCC 的系統,host 是要用來執行編譯器的系統,target 是你想讓編譯器產生程式碼的系統。
再來看看上面的例子:
--build=x86 --host=x86 --target=x86
表示在 x86 上建構與執行,為 x86 產生執行檔
--build=SH --host=SH --target=ARM
表示在 SuperH 上建構與執行,為 ARM 產生執行檔
--build=x86 --host=MIPS --target=x86
表示在 x86 上建構給 MIPS 執行,產生 x86 執行檔
--build=PPC --host=SPARC --target=SPARC
表示在 PPC 上建構給 SPARC 執行,為 SPARC 產生執行檔
--build=ARM --host=SH --target=MIPS
表示在 ARM 上建構給 SuperH 執行,產生 MIPS 執行檔
--
參考來源:GCC 完全指南
(THE EXPERT'S VOICE IN OPEN SOURCE: The Definitive Guide to GCC)
沒有留言:
張貼留言