2021年11月4日 星期四

cross compile --build --host --target

看了一堆人亂解釋,這個說法比較讓人能理解。

原文

--Build machine:the machine builds cross toolchains

--Host machine:the machine cross toolchains will execute on

--Target machine:the machine cross toolchains will produce outputs for


中文意會~

build 指的是你用來建構 toolchain的系統

host 是要用來執行toolchain的系統

target 是你想讓編譯器產生程式碼執行的系統


一般我遇過的場景是,某個資深高手同事在他的電腦(NB 1)上把toochain build好,然後給其他同事在自己的電腦(NB n)上使用toolchain接一條ICE設備到開發板(board n)上debug。

build machine:NB 1

host machine:NB n

Target:board n


Native compiler: --build, --host, --target 都一樣

例:--build=x86 --host=x86 --target=x86

表示在 x86上建構與執行,為 x86 產生執行檔


Cross compiler: --build 和 --host 一樣但 --target 不同

例:--build=SH --host=SH --target=ARM

表示在 SuperH 上建構與執行,為 ARM 產生執行檔


Crossback compiler:--build 和 --target 一樣但 --host 不同

例:--build=x86 --host=MIPS --target=x86

表示在 x86系統上建構gcc compiler,在 MIPS上執行gcc compiler, 為 x86產生執行檔(Binary Program)


Crossed native compiler: --host 和 --target 一樣但 --build 不同

例:--build=PPC --host=SPARC --target=SPARC

表示在 PPC系統上建構gcc compiler,在SPARC上執行gcc compiler,為 SPARC 產生執行檔(Binary Program)


Canadian compiler: --build, --host, --target 都不一樣

例:--build=ARM --host=SH --target=MIPS

表示在 ARM系統上建構gcc compiler,在SuperH上執行gcc compiler,為 MIPS 產生執行檔(Binary Program)


沒有留言:

張貼留言