在交叉編譯中比較常見的引數是build、host和target了,正確的理解這三者的含義對於交叉編譯是非常重要的,下面就此進行解釋
--build=編譯該軟體所使用的平台(在什麼平台上進行編譯)
--host=該軟體將執行的平台(生成的程式在什麼平台上執行)
--target=該軟體所處理的目標平台
我們以 編譯 gcc 為例子來 講解 這三者的作用
./configure --build=編譯平台 --host=執行平台 --target=目標平台 [各種編譯引數]
用上述方式配置gcc的源**,以讓其編譯出我們需要的gcc編譯器。
在這組配置引數中:
--build:
表示目前我們正在執行的平台名稱是什麼,如果當前我們是在intel的pentium機器中編譯該系統,那麼我們的--build就可能
是i686-pc-linux-gnu,當然如果我們在其它種類的機器上編譯那麼這個build就應該是那個機器所對應的平台名稱。
該引數在不指定的情況下將自動常識猜測目前平台的名稱。
--host:
表示我們把這個編譯好的gcc在什麼樣的平台下執行,在交叉編譯過程中這個需要我們來指定,因為機器自己是不能知道我們心裡是怎麼想的,
那麼我們可以明確的告訴它。
--host也可以不指定,那麼host將自動使用build來定義自己,不過那將不再是交叉編譯。
注:--build和--host在不同的時候就被配置檔案認定為交叉編譯方式。
--target:
該引數的目的是讓配置程式知道這個軟體被編譯後使用來處理什麼平台上的檔案的。
target這個引數只有在為數不多的幾個包中有用處,雖然在./configure --help中經常能看到該引數,但實際上絕大多數軟體包都是不需要該引數的。
從這個引數的含義來看,說明其處理的目標只有在不同平台下表現為不同的時候才有作用,而這些檔案通常都跟目標平台
的指令系統直接或間接有關:比如可執行檔案,對於不同平台下使用的可執行檔案的編碼可以是完全不同的,因此必須使用
對應能處理該編碼的程式才能正確處理,而如果錯誤的使用則可能導致程式錯誤或者破壞檔案,
對於這樣要處理不同平台下會
出現不同編碼的軟體,我們就應當對它指定目標平台,以免另其錯誤處理;而對於文字檔案,對於不同的平台同樣的內容表達的
含義都是相同的,因此我們不需要專門針對平台來處理,這樣的軟體我們就可以不必對它指定需要處理的平台了。
我們來總結一下:
build:自動測試在用平台名稱,若無法檢測出來則需要指定。
host:若無指定,自動使用build的結果。
build和host相同時表示本地編譯,若不相同則表示交叉編譯。
uwsgi常用引數說明
demo.socket 4 root workspace djangodemo root workspace djangodemo djangodemo.wsgi var run django demo.pid var log django demo.log processes 同時啟動uwsgi程...
tcpdump常用引數說明
一 學習tcpdump的5個引數 初次使用tcpdump時,使用tcpdump h命令可以看到它有數十個引數。根據我們在運維工作中的經驗,掌握tcpdump以下5個引數即可滿足大部分的工作需要了。i引數。使用 i引數指定需要抓包的網絡卡。如果未指定的話,tcpdump會根據搜尋到的系統中狀態為up的...
configure 常用引數
當我們使用原始碼安裝包來安裝軟體時會執行下面的命令 tar zxvf test.tar.gz cd test configure make make install來完成安裝,但是這遠沒有達到我們配置軟體的目的,這時候就需要在configure中加上一些配置,當然更詳細的設定應該在設定檔中來完成。下...