1 the architecture of gcc
2 自己編譯gcc時的 --build --host --target選項的含義和用法
<1> --build
執行本次的gcc編譯的主機,就是該configure腳本運作的主機系統。這個參數可以由config.guess自動擷取。也可以自己指定。
<2> --host
執行完本次編譯之後,将生成一個新的gcc的二進制程式,host指定的是該gcc程式所運作的主機系統。如果是本機執行,那麼
該值就等于build。如果生成的gcc在其它機器上執行,那麼host和build不同。
<3> --target
執行完本次編譯,我們将會得到一個新的gcc,這個gcc将會用來編譯其它新的程式,這個target用來指定這些新的程式所運作
的主機系統。
對于本地編譯,也就是說,編譯出的gcc運作在本機上,編譯出的gcc編譯的其它程式也運作在本機上。
以編譯binutils為例:
<1> "./configure --build=mipsel-linux --host=mipsel-linux --target=mipsel-linux"
用主機系統為mipsel-linux上的編譯器對binutils進行編譯,編譯出來的binutils運作在mipsel-linux的主機系統上,這個binutils用來編譯能夠在mipsel-linux主機系統上運作的代碼。
<2> "./configure --build=i386-linux --host=mipsel-linux --target=mipsel-linux"
用主機系統為i386-linux上的編譯器對binutils進行編譯,編譯出來的binutils運作在mipsel-linux上,這個binutils用來編譯能夠在mipsel-linux運作的代碼。
<3> "./configure --build=i386-linux --host=i386-linux --target=mipsel-linux"
用主機系統為i386-linux上的編譯器對binutils進行編譯,編譯出來的binutils運作在i386-linux上,這個binutils用來編譯能夠在mipsel-linux運作的代碼。
<4> "./configure --build=mipsel-linux --host=i386-linux --target=mipsel-linux"
用主機系統為mipsel-linux的編譯器對binutils進行編譯,編譯出來的binutils運作在i386-linux,這個binutils用來編譯能夠在mipsel-linux運作的代碼。