如果您的系統使用的是標準的GNU autoconf,那麼您總是在配置時定義交叉編譯,而不是在編譯時。如果配置腳本不知道你正在交叉編譯,當它探測系統尋找什麼是受支持的和什麼不受支持的時候,它可能會得到不正確的答案。
交叉編譯是要配置的--build,--host和--target標誌。你永遠不需要設置--build:它總是指你正在運行的系統進行配置,配置可以爲自己弄清楚。對於正常的交叉編譯,你也不需要設置--host,你可以設置--target到交叉編譯目標。如果需要,您可能還需要設置CC(用於C程序)和/或CXX(用於C++程序),LD,AR,STRIP和其他一些程序。我個人更喜歡在一個單獨的目錄下建爲好,雖然有些包不支持它不幸地):
tar xzf foo-1.1.tar.gz
mkdir obj
cd obj
../foo-1.1/configure --target=... CC=...-gcc CXX=...-g++ ...
make
注意這是所有基本的autoconf/automake的提供,因此所有的項目都會做同樣的方式(儘管以我的經驗,許多不會經常交叉編譯的項目,做錯了事情,使得它不能很好地工作)。
+1,*除*根據http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html你應該設置' - 主機「來指定輸出將運行的系統類型。 '--target'僅適用於輸出本身是交叉編譯器的情況。 – mtrw 2013-03-20 18:17:18