I have tried to understand the naming conventions behind the gcc cross-compilers, but there seems to be conflicting answers. I have the following three cross-compilers in my system:
When reading through the GNU libtool manual, it specifies the cross-compiler naming convention as:
cpu-vendor-os (os = system / kernel-system)
This does not seem completely accurate with the compilers in my system. Is the information in the GNU manual old, or have the compiler distributors simply stopped following it?
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
.