往往我們在交叉編譯的時候會用到不同版本,不同命名方式的交叉編譯器。
那麼究竟應該怎麼區分使用呢,一種方法是從命名上區分。
網上找來兩張圖先來看一下:
區分類別包括:大端 or 小端、ARMv7 or ARMv8、32位 or 64位、裸機 or 嵌入式Linux、什麼linux平臺。
一個交叉編譯器我們可以說編譯器的-gcc是多少位的,編譯出來的目標程序是多少位的。
通過file xxxx-gcc可以查看gcc是多少位的,file obj可以查看編譯出的目標程序是多少位的。
或者根據交叉編譯器的命名判斷,例如
i686_aarch64-linux-gnu:表示gcc是32位,目標程序是64位
X86-64_aarch64-linux-gnu:表示gcc是64位,目標程序是64位
X86-64_arm-linux-gnueabi:表示gcc是64位,目標程序用file查看,是32位。
具體怎麼選用?
開發機是多少位的,就下載對應的編譯器就行,不然開發機是32位的,下載X86_64的編譯器,GCC就無法執行,因爲GCC是64位的可執行程序。
一般情況下,64位的虛擬機可以使用32位的gcc。