Generated by GPT-5-mini| ARM GCC | |
|---|---|
| Name | ARM GCC |
| Developer | GNU Project, Arm Limited, Red Hat, Linaro |
| Released | 1990s |
| Latest release | GCC releases |
| Programming language | C, C++ |
| Operating system | Linux, macOS, Windows |
| License | GNU General Public License |
ARM GCC is a distribution and configuration of the GNU Compiler Collection tailored for the ARM architecture. It packages gcc front ends, linker, assembler, and runtime libraries to target cores designed by Arm Holdings and implemented by vendors such as Nuvoton, STMicroelectronics, Texas Instruments, NXP Semiconductors, Renesas Electronics. ARM GCC is widely used in projects involving Raspberry Pi, BeagleBoard, STM32, Mbed OS, and products from Qualcomm and Broadcom.
ARM GCC integrates components from the GNU Project, Binutils, and Newlib or glibc variants to produce toolchains for embedded and bare-metal development. The distribution complements ecosystems maintained by Arm Limited, Linaro, Red Hat, SUSE, Canonical, and vendor toolchains from Keil, IAR Systems, SEGGER, and Microchip Technology. It is frequently used alongside build systems and package managers such as CMake, Make (software), Meson, Bazel (software), Yocto Project, and Buildroot.
Work on GCC began under Richard Stallman within the Free Software Foundation; support for the ARM instruction set was added as ARM architectures gained popularity. Contributions from organizations such as Arm Limited, Linaro, Red Hat, and companies producing ARM silicon (for example Apple Inc., Samsung Electronics, Intel Corporation in cross-compatibility contexts) influenced optimizations and porting. The project intersects with standards and specifications from IEEE, ISO/IEC, and ecosystem efforts like Embedded Linux and OpenOCD development. Over time, branches for Thumb, Thumb-2, and ARMv8-A support were merged, coordinated with platform initiatives such as Android (operating system), Linux kernel, FreeRTOS, Zephyr Project, and Apache Mynewt.
ARM GCC distributions assemble several free software components: - GNU Compiler Collection (gcc) front ends for C, C++, Objective-C, and Ada in some distributions. - GNU Binutils (as, ld, objdump, objcopy) for assembly and linking. - Runtime libraries: Newlib, glibc, uClibc, or vendor-supplied C libraries. - Debugging tools: GDB (software), OpenOCD, and integrations with IDEs such as Eclipse, Visual Studio Code, Keil MDK-ARM. - Supporting projects: libgcc, libstdc++, libbacktrace, addr2line, readelf, and strace in hosted environments. - Cross-build utilities such as crosstool-ng and package efforts like gcc-arm-embedded and distributions from ARM Ltd. and Linaro.
Distributions target a range of ARM profiles and extensions: classic ARMv4, ARMv5, ARMv6, ARMv7-A, ARMv7-M, ARMv8-A, ARMv8-M, and microcontroller-focused cores from Cortex-M0+, Cortex-M3, Cortex-M4F, Cortex-M33 to high-performance Cortex-A series. ABIs and calling conventions implemented include the AAPCS (Procedure Call Standard for the ARM Architecture) used by EABI, variations for thumb-interwork, and support for hard-float and soft-float calling conventions. Toolchains may be configured for ELF binary formats, Mach-O for cross-compilation to macOS targets, or PE/COFF for Windows-hosted cross-development.
ARM GCC can be obtained from vendor-built binaries, distribution packages provided by Debian, Ubuntu, Fedora, Arch Linux, openSUSE, or built from source using Autotools, GNU Make, and CMake. Cross-compilation setups often use sysroots from distributions like Yocto Project or board-specific SDKs from NVIDIA for Jetson platforms, BeagleBoard.org images, or Raspberry Pi Foundation releases. Toolchains are configured with target triplets (for example arm-none-eabi) and options such as --with-newlib, --enable-languages, and multilib support. Integration with debugging and flashing tools uses JTAG, SWD, ST-Link, Black Magic Probe, and vendor debuggers from Atmel and Segger.
Common workflows include firmware development for microcontrollers with FreeRTOS or Zephyr Project, bare-metal applications, and cross-compiled Linux userland building for OpenEmbedded and Yocto Project. Typical commands invoke gcc, g++, and objcopy for linking and producing binaries (ELF, hex, SREC). Developers use GDB, hardware probes, and IDEs like Eclipse or IAR Embedded Workbench for source-level debugging and flashing. Continuous integration pipelines on Jenkins, GitLab CI, GitHub Actions, and Travis CI automate builds, tests, and artifact generation; artifact storage often uses Artifactory, Nexus Repository, or cloud services from Amazon Web Services and Microsoft Azure.
Optimization flags in GCC (such as -O2, -O3, -Os, -Ofast) interact with ARM-specific tuning options like -mcpu, -march, and -mfpu to exploit features in Neon, VFP, and SIMD units found in SoCs from Qualcomm Snapdragon and Apple A-series. Profile-guided optimization workflows use gcov, gprof, and perf (Linux) to guide inlining and loop transformations. Debugging of low-level faults often employs GDB, core dumps analyzed with addr2line and readelf, and hardware tracing using ETM and CoreSight components. Toolchain regressions and performance benchmarks are tracked in community testbeds run by Linaro and validated against reference implementations from ARM Ltd. and academic research reported in venues such as ACM and IEEE conferences.
Category:GNU toolchains