Difference between arm-eabi arm-gnueabi and gnueabi-hf compilers

LinuxGccLinux KernelArmLinux Device-Driver

Linux Problem Overview


What is the difference between arm-eabi, gnueabi and gnueabi-hf cross compilers? I am kind of finding it difficult to choose the executable that is correct for my target platform. Is there a native compiler for arm?

Linux Solutions


Solution 1 - Linux

I'm not completely sure:

  • the eabi stands for the compilation of code which will run on bare metal arm core.
  • the gnueabi stands for the compilation of code for linux

For the gnueabi/gnueabi-hf part, I found an answer here.

>gcc-arm-linux-gnueabi is the cross-toolchain package for the armel architecture. This toolchain implies the EABI generated by gcc's -mfloat-abi=soft or -mfloat-abi=softfp options. > >gcc-arm-linux-gnueabihf is the cross-toolchain package for the armhf architecture. This toolchain implies the EABI generated by the gcc -mfloat-abi=hard option.

'hf' means hard-float which indicates that the compiler and its underlying libraries are using hardware floating point instructions rather than a software implementation of floating point such as fixed point software implementations. The 'eabi' refers to what the underlying binary is going to look like. It can be argued that these can be achieved with flags to gcc but the issue is that of bare metal pre-compiled libraries. Unless you are recompiling everything from source, it may not be feasible to use gcc with flags alone. Even in that case you might have to carefully configure each package or library with the appropriate compile options.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpreetamView Question on Stackoverflow
Solution 1 - LinuxAkhneyzarView Answer on Stackoverflow