往往我们在交叉编译的时候会用到不同版本,不同命名方式的交叉编译器。
那么究竟应该怎么区分使用呢,一种方法是从命名上区分。
网上找来两张图先来看一下:
区分类别包括:大端 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。