1. Does arm-gcc-none-eabi and newlib is packed?
2. Why arm-gcc-none-eabi need glibc 2.14?
I have a problem when I use arm gcc none eabi cross compiler.
"version GLIBC_2.14 not found"
Then I install glibc 2.14 and add to LD_LIBRARY_PATH. It's perfect compile my code.
But I have not download newlib in my system.
I don't know what library is linked on arm-gcc-none-eabi.
Do I need add some option to use newlib when I Compile C code? Or default is linked to newlib.
This web site said arm-gcc-none-eabi is based on Free Software Foundation's (FSF) GNU Open source tools and newlib.
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads?_ga=2.161423419.782641712.1568254978-323909128.1538373791
> What are differences between AArch32/64 bare-metal target (arm-eabi) and arm-none-eabi-gcc
There are two things here. First, how we name toolchains. We use "target triplet" naming convention.
Target Triplets describe a platform on which code runs.They contain three fields:* the name of the CPU family/model,* the vendor and* the operating system name.
Target triplets have this simple structure: machine-vendor-operatingsystem
Vendor field is sometimes omitted or can be for example "none" or "unknown".
A-Profile toolchain is released by us and you can find on our pages. This toolchain is using target triplet convention without vendor (as vendor would be "none"). This is for historical reason as until GCC 7 Linaro was releasing GCC toolchain targeted for A-Profile Arm processors. We've decided to keep this convention so that users can follow up with the same names since we (Arm) release GCC 8 onwards.
You can check your toolchain target triplet by:
$ gcc -print-multiarch
Example output could be:
* x86_64-linux-gnu - produces binaries for x86_64 GNU/Linux targets (e.g, Ubuntu running on PC).* aarch64-linux-gnu - produces binaries for processors supporting AArch64 a 64-bit execution state of the ARMv8 ISA.
For the same historical reason Arm Embedded toolchain (one targeting R/M Profile Arm processors) is using target triplet WITH vendor field (even if this is just "none").
So arm-none-eabi and arm-eabi toolchains are the same thing. But please remember that how we build toolchain for you differs. For example we use additional multilibs for GNU Arm Embedded toolchain (arm-none-eabi). Multilib is useful for cross-compiling, that is, compiling a program to run on a different processor architecture.
For GNU Arm Embedded toolchain we are including various multilibs so that users can tweak toolchain to output code for specific R/M profile CPU.
To check which multilib is included with your GNU toolchain just:
$ gcc --print-multi-lib.;32;@m32x32;@mx32
Note: if you see only .; it means there is no additional multilib brewed into toolchain.
So in conclusion, you will use "GNU Toolchain for A-Profile Architecture" to build your code for A-Profile Arm processors (e.g. if you have AArch64 GNU/Linux machine you will cross-compile with aarch64-linux-gnu toolchain).And "GNU Arm Embedded Toolchain" for your R/M Profile (micro-controller) work.
Thank you so much! This is very useful information. I will keep learning.