74

What is the difference between arm-linux-gcc and arm-none-linux-gnueabi and arm-linux-gnueabi toolchains?

Do they compile differently?

auselen
  • 27,577
  • 7
  • 73
  • 114
user1891109
  • 741
  • 1
  • 6
  • 3
  • 1
    Related: [Difference between arm-eabi arm-gnueabi and gnueabi-hf compilers](https://stackoverflow.com/q/26692065/427545) – Lekensteyn Aug 10 '15 at 20:26

1 Answers1

106

Toolchains have a loose name convention like arch[-vendor][-os]-abi.

  • arch is for architecture: arm, mips, x86, i686...
  • vendor is tool chain supplier: apple,
  • os is for operating system: linux, none (bare metal)
  • abi is for application binary interface convention: eabi, gnueabi, gnueabihf

For your question, arm-none-linux-gnueabi and arm-linux-gnueabi is same thing. arm-linux-gcc is actually binary for gcc which produces objects for ARM architecture to be run on Linux with default configuration (abi) provided by toolchain.

Some nice reading: Toolchains.

auselen
  • 27,577
  • 7
  • 73
  • 114
  • 4
    This *might* be true, but really, there's not enough information to be sure. You need to know about the provenance of the toolchain. Non-"gnueabi" toolchains are probably quite rare, however. – ams Dec 10 '12 at 09:41
  • Are you talking about arm-linux-gcc? or can you clarify? – auselen Dec 10 '12 at 09:46
  • 1
    It's worth pointing out that tool-chains are configured with default header and library search paths. When cross-compiling, these should be pointing at the target image not the development machine's own headers and libraries. Thus you can easily end up with a compiler which reports its specification as `arm-none-linux-gnueabi` that actually compile with slightly different results. You can check this with `gcc -print-sysroot` – marko Dec 10 '12 at 09:50
  • @auselen: Yes, `arm-linux` seems ambiguous to me. I've not checked, and it might be that in current gcc that's a synonym, but I'll bet it's meant something different in the past. Besides, the triplet only specifies the default config, and the toolchain could have been built with other settings enabled; in that case, I would choose the generic triplet rather than have it lie. – ams Dec 10 '12 at 09:55
  • @ams if I understand you correctly, you say arm-linux-gcc executes default settings as toolchain have been built. yes you are definitively right. – auselen Dec 10 '12 at 09:58
  • @Marko thanks for the tip. Toolchains are quite complicated as you point. I just tried to scratch the surface. – auselen Dec 10 '12 at 10:01
  • Seems the link to Toolchain is http://web.eecs.umich.edu/~prabal/teaching/eecs373-f12/notes/notes-toolchain.pdf – Thomson Nov 12 '14 at 02:21