先來個小故事,某天組裝工趁放假跑去看老房子。發現只有一間上面有動物的造型。因為年代久遠,只看得出來有四肢腳而已,而不知道是那種動物。好奇之餘問了店家,店家說他們承租,不知道那是什麼東西。後來一位長者經過,就順便請教他同一個問題,長者說他住這邊好幾年都不知道上面有這東西。最後遇到當地文史工作室的人,問了才知道是當時主人的商標,一隻獅子。
我們常常用的東西,因為太習以為常,以至於發生視而不見的狀況屢見不鮮。但是惡魔就在細節裡面,而長時間地視而不見就會把自己對於這樣的事物感受性變低。
回到主體。組裝的時候,常常缺東缺西的。這時候就需要cross-compile一些套件頂一下,所以如果有人組裝過的話,應該會對下面的命令倍感親切。
$ ./configure --host=mipsel
如果組裝夠次數夠多,也會看到--target
和--build
的參數似乎和這個有關。找時間稍微瞭解一下
對於--target目前手上的資料無法讓我完全理解,請注意!
根據Autoconf手冊說明,這些參數的預設值如下:
--build
--host
--build
相同--target
--host
相同因為這樣的連動性,如果你要cross-compile,那麼下了--host
後麻煩不要省掉--build
,不然autotool會把build設成和host一樣。
Automake手冊裡面的定義
--build
--host
--target
--host
一樣同樣的平臺,根據上面的連動,你設了--host
就可以省略這個選項Autotool選擇gcc的方式如下
--host
和--build
相同
--host
和--build
不同
--target
的為gcc的prefix--host=xxx
, --target=zzz
,會使用zzz-gcc產生xxx平臺的機械碼看的有點混亂嘛?沒關係,autoconf 2.69手冊有提到,要cross-compile的話,唯一(if and only if)的條件就是指令--host
指定和你現在的平臺不同就好。