交叉編譯 libSDL
我正在嘗試為定制的基於 Debian 的 Linux 系統交叉編譯 libSDL 1.2 版。我正在使用的工具鏈已經正確配置,因此我只需在所需程式碼上執行
gcc
/g++
並且生成的輸出與目標機器兼容。當我
./configure --help
在 libSDL 源目錄中執行時,我發現我基本上可以設置一些環境變數來指向我的交叉編譯器。但是,我也看到以下選項:
System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD]
我查看了
configure.in
、build-scripts/config.sub
和build-scripts/config.guess
文件,但無法真正弄清楚它是如何工作的。這些選項是必需的嗎?如果沒有,使用它們是個好主意嗎?
答案是“是”,我應該同時指定兩者。該
--build
標誌將是進行編譯的機器的體系結構……腳本可以很好地猜測這將是什麼,但最好是安全而不是抱歉並實際指定自己。該--host
標誌是使這種交叉編譯真正起作用的必要部分。當 my--build
和--host
flags 的值不同時(例如,i686-generic 與 x86_64-linux),配置腳本會意識到我正在嘗試交叉編譯。而不是簡單地求助於本地編譯器(在主機上,在某處指定 $ PATH), the configure scripts would find a compiler suite (compiler, linker, etc.) either specified as flags or an environment variables (e.g. $ CPPFLAGS, $ CC, $ AR等)並使用它們。
--build=BUILD
- 是編譯編譯器執行的系統。這僅用於在架構 A 上建構一個將在架構 B 上執行並為架構 C 生成程式碼的交叉編譯器。
--host=HOST
- 是編譯發生的系統
--target=TARGET
- 編譯後的二進製文件將在哪個系統上執行參見例如這個交叉編譯介紹。