本篇文章關於linux開發中交叉編譯時對於平台指定的技巧。
--build:編譯這個庫的平台
--host:編譯完後這個庫要執行的平台
--target:這個和交叉編譯工具鏈有關。表示通過工具鏈又編譯的程式要執行的平台。
舉栗說明:
./configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu
這個表示我使用i686平台的linux系統來編譯可以在i686平台上執行的庫或者程式。
./configure --build=i686-pc-linux-gnu --host=arm
這個表示我使用i686平台的linux系統來編譯能夠在arm平台上上執行的庫或者程式。
./configure --host=i686-pc-linux-gnu --host=arm --target=arm
這個一般是用在交叉編譯工具鏈上的,比如arm-linux-gcc的編譯,這些引數就指定我要在i686平台上編譯出來乙個arm-linux-gcc,它可以在arm平台上執行,用它編譯出來的庫或者程式還是在arm上執行。當然最常用的還是在i686平台上編譯可以在i686上執行的arm-linux-gcc,然後arm-linux-gcc編譯出來的庫或者程式能夠在arm平台上執行。
可能對於剛入門的人來說弄清楚這些平台的名字很麻煩,不清楚怎麼去檢視自己執行系統的平台。
有很多地方可能會說使用uname -a命令來檢視,但是對於新手來說很難從這一大串資訊中提取出來i686-pc-linux-gnu。
下面介紹乙個利器:config.guess。這個指令碼基本上在所有的庫裡面都有,如果你不指定--build的話在配置時configure指令碼會執行config.guess來檢測當前的平台。可以直接執行這個指令碼檢視自己當前使用的平台:
對於host怎麼指定網上有著五花八門的說法:
armarm-linux
arm-linux-guneabi
arm-none-linux-guneabi
不負責任的總結一下:這些都對,都可以,因為它只是需要知道它是arm平台而已。上證據:
我們可以看到它匹配的是以arm開頭的,當然了,為了安全起見,最好使用最後一種命名方式吧。這個是和你使用的交叉編譯鏈同名字首。
如果有以下情況,可以通過郵箱或者qq聯絡我:
1、以上內容闡述的有錯誤需要修正;
2、有疑問需要和我一起**;
4、想交個朋友,或者要指點我相關技術的。
****:[email protected]
cmake指定交叉編譯
新建檔案arm.cmake,內容如下 指定嵌入式系統的編譯輸出目錄 set sysroot path home suka out system 指定交叉編譯器路徑 set toolschain path home suka toolschain set toolchain host usr bin ...
cmake指定交叉編譯
告知當前使用的是交叉編譯方式,必須配置,cmake system name即目標機target所在的作業系統名稱,比如arm或者linux你就需要寫 linux 如果android平台你就寫 android 如果你的嵌入式平台沒有相關os你即需要寫成 generic set cmake system...
cmake指定交叉編譯
新建檔案arm.cmake,內容如下 指定嵌入式系統的編譯輸出目錄 set sysroot path home suka out system 指定交叉編譯器路徑 set toolschain path home suka toolschain set toolchain host usr bin ...