Linux

交叉編譯 libSDL

  • October 20, 2014

我正在嘗試為定制的基於 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.inbuild-scripts/config.subbuild-scripts/config.guess文件,但無法真正弄清楚它是如何工作的。

這些選項是必需的嗎?如果沒有,使用它們是個好主意嗎?

答案是“是”,我應該同時指定兩者。該--build標誌將是進行編譯的機器的體系結構……腳本可以很好地猜測這將是什麼,但最好是安全而不是抱歉並實際指定自己。該--host標誌是使這種交叉編譯真正起作用的必要部分。當 my--build--hostflags 的值不同時(例如,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- 編譯後的二進製文件將在哪個系統上執行

參見例如這個交叉編譯介紹

引用自:https://unix.stackexchange.com/questions/105967