2012-10-31 99 views
4

我試圖自己編譯跨平臺工具鏈。交叉編譯,爲什麼「檢查我們是否正在交叉編譯...否」?

當我編譯binutils-2.22時,它的成功,但爲什麼會出現「檢查我們是否正在交叉編譯...否」?我想它應該是「是」,對吧?

我的主機是運行Ubuntu的i686,我的目標是手臂。

~/telink_linux/build-tools/binutils-2.22$ ./configure --prefix=/home/shuaihan/telink_linux/tools --target=arm-linux 
checking build system type... i686-pc-linux-gnu 
checking host system type... i686-pc-linux-gnu 
checking target system type... arm-unknown-linux-gnu 
... 
checking whether we are cross compiling... no 
... 
configure: creating ./config.status 
config.status: creating Makefile 

在此之後,我 「製造」 和 「makeinstall」,臂的linux *創建。

謝謝!

回答

3

因爲你沒有交叉編譯binutils;你正在編譯交叉binutils。如果您正在編譯ARM binutils 以在ARM上運行,或者如果您正在編譯ARM binutils以在第三個平臺上運行(無論是i686-linux還是arm-linux),那麼該消息會說「是」。

+0

哦,我明白了。看起來我誤解了這封郵件的意思。因爲我的「構建系統」和「主機系統類型」一樣,所以它不是「交叉編譯」,對吧?謝謝! – justnight

+0

沒錯。您正在構建交叉工具*,因爲「主機」和「目標」是不同的,但您不是自己交叉編譯工具,因爲「構建」和「主機」是相同的。 – hobbs

+1

這是舊的,但有一個警告沒有列出:Linux支持'binfmt_misc',它允許此測試在實際交叉編譯時失敗;例如,Linux系統上的'./configure --target = x86_64-w64-ming32'有時會對交叉編譯檢查表示「否」,如果系統配置爲通過Wine運行.exe文件而不必顯式調用wine 。爲了解決這個問題,繞過檢查,強制它不運行:'./configure --host = $(./ config.guess)--target = x86_64-w64-mingw32'。 –