./configure配置的參數 交叉編譯 host,build target的含義


交叉編譯 host,build target的含義:
build就是你正在使用的機器,host就是你編譯好的程序可以運行的平台,
target就是你編譯的程序可以處理的平台.
這個 build和host比較好理解,但是target就不好辦了,到底什么意思呢?
一般來說,我們平時所說的交差編譯用不到他target的,
比如. /configure --build=i386-linux,--host=arm-linux就可以了,在386的平台上編譯可以運行在arm板的程序. 


今天閱讀autobook[注1]一書,3.4節講到了configuration name。
書中提到了build、host、target這幾個變量。看起來容易讓人感到一些混淆,其實這極大的簡化了二進制文件格式生成的控制。 
build -- 在build系統中建立package host -- 建立好package后,package能夠在host運行 target -- 經由package所產生的可執行文件能夠在target上運行。
例如: 在GNU/Linux系統上交叉編譯一個可以在AIX機器上運行的package。
那么 build = i*86-pc-linux-gnu host = rs6000-ibm-aix3.2 target = rs6000-ibm-aix3.2 
在GNU/Linux系統上建立一個交叉編譯工具,
此交叉編譯工具可以在AIX上運行,由此交叉編譯出來的文件可以在ARM上運行,
那么: build = i*86-pc-linux-gnu host = rs6000-ibm-aix3.2 target = arm-linux 由此可以看出
,當建立一個package時,不必非在本地機器上建立,可以設置不同的configuration name來生成不同系統的package。

注:[1]autobook描述如何使用GNU提供的一系列autotools來管理復雜軟件系統的開的。 

具體解釋一下,build就是你正在使用的機器,host就是你編譯好的程序可以運行的平台,target就是你編譯的程序可以處理的平台.
這個build和host比較好理解,但是target就不好辦了,到底什么意思呢?一般來說,我們平時所說的交差編譯用不到他target的
,比如./configure --build=i386-linux,--host=arm-linux就可以了,在386的平台上編譯可以運行在arm板的程序.但是,一般我們都是編譯程序,而不是編譯工具,如果我們編譯工具,
比如gcc,這個target就有用了.如果我們需要在一個我們的機器上為arm開發板編譯一個可以處理mips程序的gcc,那么target就是mips了.不知道我的解釋是否正確,如果大家看到了這篇帖子,覺得不對,批評指正.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM