Can anyone explain the gcc cross-compiler naming convention?
The fact is that, there is a rule, and it is the one described above from rubenvb. But in several cases the naming you will find is incorrect, as:
gcc-pippotron-6.3.1-2017.05-x86_64_arm-linux-gnueabihf
gcc-pippotron-arm-none-eabi-4.8-2013.11_linux
This maming above are 2 examples that are not respecting the rule.
The naming comes down to this:
arch-vendor-(os-)abi
So for example:
x86_64-w64-mingw32
= x86_64 architecture (=AMD64), w64 (=mingw-w64 as "vendor"), mingw32 (=win32 API as seen by GCC)
i686-pc-msys
= 32-bit (pc=generic name) msys binary
i686-unknown-linux-gnu
= 32-bit GNU/linux
And your example specifically:
arm-none-linux-gnueabi
= ARM architecture, no vendor, linux OS, and the gnueabi ABI.
The arm-eabi
is alike you say, used for Android native apps.
One caveat: Debian uses a different naming, just to be difficult, so be careful if you're on a Debian-based system, as they have different names for eg. i686-pc-mingw32
.